Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # FUCK IT
- usage() {
- echo "Usage: $0 BACKUP_SRC BACKUP_DST EXCLUDE_FILE"
- echo "USE FULL PATHS!!"
- exit 1
- }
- # Usage: cycle BACKUP_TYPE COPIES_TO_RETAIN
- cycle() {
- echo "Moving "$1" backups and making a new one..."
- i="$2"
- while [ "$i" -gt "1" ]; do
- if [ -d "$dst"/"$1"."$i" ]; then
- echo "Removing "$1"."$i""
- echo rm -r "$dst"/"$1"."$i"
- fi
- if [ -d "$dst"/"$1".`expr "$i" - 1` ]; then
- echo "Moving "$1".`expr "$i" - 1` to "$1"."$i""
- mv "$dst"/"$1".`expr "$i" - 1` "$dst"/"$1"."$i"
- fi
- i=`expr "$i" - 1`
- done
- if [ "$1" -eq "hourly" ]; then
- reference="$dst"/hourly.2
- else
- reference="$dst"/hourly.1
- fi
- /usr/local/bin/rsync -av --exclude-from="$exclude" --link-dest="$reference" --delete "$src"/ "$dst"/"$1".1
- }
- if [ -z "$1" -o -z "$2" -o -z "$3" ]; then
- usage
- fi
- src="$1"
- dst="$2"
- exclude="$3"
- cycle "hourly" "23"
- # Do daily backups at 8:xx AM where xx is whenever this cron job is scheduled
- if [ `date "+%k"` -eq "8" ]; then
- cycle "daily" "6"
- fi
- # Do weekly backups on Mondays
- if [ `date "+%u"` -eq "1" -a `date "+%k"` -eq "0" ]; then
- cycle "weekly" "4"
- fi
Advertisement
Add Comment
Please, Sign In to add comment