====== Backup rsync scripts ====== ===== shortcut example script ===== **backup_rsync_programming.sh** #!/bin/sh ~/scripts/backup/rsync/backup_rsync.sh --users-billh-prog-only exit 0 ===== main backup script ===== **backup_rsync.sh** #!/bin/bash a=/Volumes/Seagate-1 b=/Backup_rsync y=$a$b # if the drive mount doesn't exist, then exit with an error if [ ! -d $a ];then echo -e "Error:\n\tThe drive mount point $a$b\n\tcould not be found. Maybe the drive is unplugged, or the power is off." exit 1 fi #read -p "sleep after backup? (y/n)> " input echo -e "backup started at: $(date '+%F %T')\n" if [ -z $1 ] || [ $1 == "--etc-only" ];then echo -e "/etc/...\n\ CiscoSystemsVPNClient/*\n\ httpd/*\n\ anacrontab\n\ bashrc\n\ crontab\n\ efax.rc\n\ hostconfig\n\ hosts*\n\ motd*\n\ php.ini*\n\ profile*\n\ smb.conf*\n\ ssh_config\n\ sshd_config" rsync -aR --delete-excluded --delete-after /private/etc/CiscoSystemsVPNClient "$y" rsync -aR --delete-excluded --delete-after /private/etc/httpd "$y" rsync -aR --delete-excluded --delete-after /private/etc/anacrontab "$y" rsync -aR --delete-excluded --delete-after /private/etc/bashrc "$y" rsync -aR --delete-excluded --delete-after /private/etc/crontab "$y" rsync -aR --delete-excluded --delete-after /private/etc/efax.rc "$y" rsync -aR --delete-excluded --delete-after /private/etc/hostconfig "$y" rsync -aR --delete-excluded --delete-after /private/etc/hosts* "$y" rsync -aR --delete-excluded --delete-after /private/etc/motd* "$y" rsync -aR --delete-excluded --delete-after /private/etc/php.ini* "$y" rsync -aR --delete-excluded --delete-after /private/etc/profile* "$y" rsync -aR --delete-excluded --delete-after /private/etc/smb.conf* "$y" rsync -aR --delete-excluded --delete-after /private/etc/ssh_config "$y" rsync -aR --delete-excluded --delete-after /private/etc/sshd_config "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--applications-only" ];then echo -e "/Applications/...\n\ iSync.app" rsync -aR --delete-excluded --delete-after /Applications/iSync.app "$y" echo -e "\tDone\n" fi #if [ -z $1 ] || [ $1 == "--sw-var-mysql-only" ];then # echo "/sw/var/mysql/ hartung,azparcels, and ticketdb" # rsync -aR --delete-excluded --delete-after /sw/var/mysql/hartung "$y" # rsync -aR --delete-excluded --delete-after /sw/var/mysql/azparcels "$y" # rsync -aR --delete-excluded --delete-after /sw/var/mysql/ticketdb "$y" # echo -e "\tDone\n" #fi #if [ -z $1 ] || [ $1 == "--sw-etc-only" ];then # echo "/sw/etc" # rsync -aR --delete-excluded --delete-after --exclude "/sw/etc/openldap*" /sw/etc "$y" # echo -e "\tDone\n" #fi if [ -z $1 ] || [ $1 == "--sw-only" ];then echo "/sw" rsync -aR --delete-excluded --delete-after --exclude "/sw/var/apache2/logs/cgisock" /sw "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-websites-only" ];then echo "/Public/Web Sites" rsync -aR --delete-excluded --delete-after /Public/Web\ Sites "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--users-billh-only" ];then echo "/Users/billh" rsync -aR --delete-excluded --delete-after --exclude "/Users/billh/Applications/*" --exclude "/Users/billh/.qt/*" --exclude "/Users/billh/Library/Acrobat User Data/8.0_ppc/Synchronizer/*" /Users/billh "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--users-shared-only" ];then echo "/Users/Shared" rsync -aR --delete-excluded --delete-after /Users/Shared "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-drawings-only" ];then echo "/Public/Drawings" rsync -aR --delete-excluded --delete-after /Public/Drawings "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-work-only" ];then echo "/Public/Work" rsync -aR --delete-excluded --delete-after /Public/Work "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-graphics-only" ];then echo "/Public/Graphics" rsync -aR --delete-excluded --delete-after /Public/Graphics "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-books-only" ];then echo "/Public/Books" rsync -aR --delete-excluded --delete-after /Public/Books "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-downloads-only" ];then echo "/Public/Downloads" rsync -aR --delete-excluded --delete-after /Public/Downloads "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-emulation-only" ];then echo "/Public/Emulation" rsync -aR --delete-excluded --delete-after /Public/Emulation "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-miscassets-only" ];then echo "/Public/_MISC_ASSETS" rsync -aR --delete-excluded --delete-after /Public/_MISC_ASSETS "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-zipdisks-only" ];then echo "/Public/Zip Disks" rsync -aR --delete-excluded --delete-after /Public/Zip\ Disks "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--system-library-startupitems-only" ];then echo "/System/Library/StartupItems" rsync -aR --delete-excluded --delete-after /System/Library/StartupItems "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-pictures-only" ];then echo "/Public/Pictures" rsync -aR --delete-excluded --delete-after --exclude "*.CRW.preview" --exclude "*.crw.preview" /Public/Pictures "$y" echo -e "\tDone\n" fi if [ -z $1 ] || [ $1 == "--public-music-only" ];then echo "/Public/Music" rsync -aR --delete-excluded --delete-after /Public/Music "$y" echo -e "\tDone\n" fi # the backups below are special cases, and aren't processed without their specific argument # $1 is quoted to avoid the "unary operator expected" error if [ "$1" == "--all-websites" ];then echo "/Public/Web Sites" rsync -aR --delete-excluded --delete-after /Public/Web\ Sites "$y" echo -e "\tDone\n" echo "/Users/billh/Sites" rsync -aR --delete-excluded --delete-after /Users/billh/Sites "$y" echo -e "\tDone\n" echo "/Public/Work/web sites" rsync -aR --delete-excluded --delete-after /Public/Work/web\ sites "$y" echo -e "\tDone\n" fi if [ "$1" == "--users-billh-prog-only" ];then echo "/Users/billh/prog" rsync -aR --delete-excluded --delete-after /Users/billh/prog "$y" echo -e "\tDone\n" fi echo -e "backup finished at: $(date '+%F %T')\n" # should the computer be put to sleep after the script is finished? #if [ "$input" == "y" ]; then # sleep 10 # ~/scripts/SleepNow #fi exit 0 ===== snapshot technique ===== Modify the beginning of the file to create/update a directory with a date * rsync_snapshot/backup_rsync.sh #!/bin/bash a=/Volumes/Seagate-1 b="/Backup_rsync_snapshot_$(date '+%F')" y=$a$b (continue with main script) ...