Guest User

Untitled

a guest
May 21st, 2013
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.15 KB | None | 0 0
  1. # FUCK IT
  2.  
  3. usage() {
  4.   echo "Usage: $0 BACKUP_SRC BACKUP_DST EXCLUDE_FILE"
  5.   echo "USE FULL PATHS!!"
  6.   exit 1
  7. }
  8.  
  9. # Usage: cycle BACKUP_TYPE COPIES_TO_RETAIN
  10. cycle() {
  11.   echo "Moving "$1" backups and making a new one..."
  12.   i="$2"
  13.   while [ "$i" -gt "1" ]; do
  14.     if [ -d "$dst"/"$1"."$i" ]; then
  15.       echo "Removing "$1"."$i""
  16.       echo rm -r "$dst"/"$1"."$i"
  17.     fi
  18.     if [ -d "$dst"/"$1".`expr "$i" - 1` ]; then
  19.       echo "Moving "$1".`expr "$i" - 1` to "$1"."$i""
  20.       mv "$dst"/"$1".`expr "$i" - 1` "$dst"/"$1"."$i"
  21.     fi
  22.     i=`expr "$i" - 1`
  23.   done
  24.   if [ "$1" -eq "hourly" ]; then
  25.     reference="$dst"/hourly.2
  26.   else
  27.     reference="$dst"/hourly.1
  28.   fi
  29.   /usr/local/bin/rsync -av --exclude-from="$exclude" --link-dest="$reference" --delete "$src"/ "$dst"/"$1".1
  30. }
  31.  
  32. if [ -z "$1" -o -z "$2" -o -z "$3" ]; then
  33.   usage
  34. fi
  35.  
  36. src="$1"
  37. dst="$2"
  38. exclude="$3"
  39.  
  40. cycle "hourly" "23"
  41.  
  42. # Do daily backups at 8:xx AM where xx is whenever this cron job is scheduled
  43. if [ `date "+%k"` -eq "8" ]; then
  44.   cycle "daily" "6"
  45. fi
  46.  
  47. # Do weekly backups on Mondays
  48. if [ `date "+%u"` -eq "1" -a `date "+%k"` -eq "0" ]; then
  49.   cycle "weekly" "4"
  50. fi
Advertisement
Add Comment
Please, Sign In to add comment