File: //ibin/cleanup
#########################################################################################################
#!/bin/bash
# cleanup
# Written by - Jack Sasportas - Jack@innovativeinternet.com
#
# Erase old files/folders based on value in the DAYS field
#
# expecting folder value via command line
# /ibin/cleanup /path/to/folder
#
# 01-01-2022 - added ver info
# 02-08-2022 - added parameter for deletion days, default 90
# 04-22-2022 - Changed to ctime and xargs
# 02-01-2023 - Added a protected folder option, improved delete speed, and display of whats being deleted
#
#########################################################################################################
VER="v1.4"
DAYS=80 #Delete backups after X DAYS
FIND=/usr/bin/find;
RM=/bin/rm;
REDonWHITE='\e[1;41;39m'
CLEAR='\033[0m\n'
PROTECTED_DIRS_FILE="/ibin/protected_dirs.txt"
if [ $# -gt 2 ]; then
echo "Usage: $0 [folder] [days]"
exit 1
fi
if [ $# -eq 0 ]; then
FOLDER=$(pwd)
else
FOLDER=$1
fi
# Ensure that the restricted directories are not used
if [ -f $PROTECTED_DIRS_FILE ]; then
while read -r dir; do
if [ "$FOLDER" == "$dir" ]; then
echo "Error: $dir is a restricted directory and cannot be used."
exit 1
fi
done < "$PROTECTED_DIRS_FILE"
else
echo "Error: $PROTECTED_DIRS_FILE does not exist."
exit 1
fi
# Set Days to 2nd Parameter
if [ $# -eq 2 ]; then
DAYS=$2
fi
echo -e "$REDonWHITE Cleanup Directories $VER\\n"
echo "Deleting directories older than $DAYS days in $FOLDER"
echo -e "$CLEAR"
# Use xargs to efficiently delete directories in batches
$FIND $FOLDER -maxdepth 1 -type d -mtime +$DAYS -print0 | while read -d $'\0' dir; do
echo "Deleting directory: $dir"
$RM -rf "$dir"
done