pathScripts/shredr

80 lines
1.9 KiB
Bash
Executable file

#!/bin/bash
# -------------------------------------------------
# secure_delete.sh
# Description:
# This script securely deletes a file or all files within a directory.
# Usage:
# ./secure_delete.sh /path/to/file_or_directory
# -------------------------------------------------
# Function to display usage information
usage() {
echo "Usage: $0 /path/to/file_or_directory"
exit 1
}
# Check if exactly one argument is provided
if [ "$#" -ne 1 ]; then
echo "Error: Exactly one path must be provided."
usage
fi
TARGET_PATH="$1"
# Check if the path exists
if [ ! -e "$TARGET_PATH" ]; then
echo "Error: The path '$TARGET_PATH' does not exist."
exit 1
fi
# Function to shred a single file with specified options
shred_file() {
local file="$1"
echo "Shredding file: $file"
shred -f -v -z -n 9 "$file"
if [ $? -eq 0 ]; then
echo "Successfully shredded: $file"
else
echo "Failed to shred: $file" >&2
fi
}
# Determine if the path is a file or directory
if [ -f "$TARGET_PATH" ]; then
# It's a regular file
shred_file "$TARGET_PATH"
elif [ -d "$TARGET_PATH" ]; then
# It's a directory
echo "Detected directory: $TARGET_PATH"
echo "Shredding all files within the directory..."
# Find and shred all regular files within the directory
find "$TARGET_PATH" -type f -print0 | while IFS= read -r -d '' file; do
shred_file "$file"
done
echo "All files within '$TARGET_PATH' have been shredded."
# Remove the now-empty directory structure
echo "Removing directory: $TARGET_PATH"
rm -rf "$TARGET_PATH"
if [ $? -eq 0 ]; then
echo "Directory '$TARGET_PATH' has been removed."
else
echo "Failed to remove directory: $TARGET_PATH" >&2
fi
else
# Neither a regular file nor a directory
echo "Error: The path '$TARGET_PATH' is neither a regular file nor a directory."
exit 1
fi
echo "Secure deletion completed successfully."
exit 0