Table of Contents

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

#!/bin/bash

a=/Volumes/Seagate-1
b="/Backup_rsync_snapshot_$(date '+%F')"
y=$a$b

(continue with main script)
...