File: //bigscoots/wpo/backups/prune_old_backups.sh
#!/bin/bash
# Set lock file path
WPOUSERPATH=$(pwd)
LOCKFILE="$WPOUSERPATH/.cleanup.lock"
# Check if lock file exists
if [ -e "$LOCKFILE" ]; then
echo "Lock file exists. Another instance of the script may be running."
exit 1
else
# Create lock file
touch "$LOCKFILE"
fi
# Function to remove lock file
cleanup() {
rm -f "$LOCKFILE"
}
# Trap to call cleanup function on exit
trap cleanup EXIT
# Set cleanup parameters
KEEPAUTO=30
KEEPMAN=5
HOWMANYAUTO=$(ls -1 --color=no |grep back- | wc -l)
HOWMANYMAN=$(ls -1 --color=no |grep manual- | wc -l)
mkdir -p empty
if [ "$HOWMANYAUTO" -gt $KEEPAUTO ]; then
for i in $(ls -1 --color=no | grep back- | sort -n | head -$((HOWMANYAUTO-KEEPAUTO))); do
rsync -rd --delete empty/ "$i"/
rm -rf "$i"
END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
echo "Removed $i in $DIFF seconds." >> "$WPOUSERPATH/cleanup.log"
done
fi
if [ "$HOWMANYMAN" -gt $KEEPMAN ]; then
for i in $(ls -1 --color=no | grep manual- | sort -n | head -$((HOWMANYMAN-KEEPMAN))); do
START=$(date +%s.%N)
rsync -rd --delete empty/ "$i"/
rm -rf "$i"
END=$(date +%s.%N)
DIFF=$(echo "$END - $START" | bc)
echo "Removed $i in $DIFF seconds." >> "$WPOUSERPATH/cleanup.log"
done
fi