Skip to content

Instantly share code, notes, and snippets.

@josephholsten
Created February 24, 2009 22:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josephholsten/69828 to your computer and use it in GitHub Desktop.
Save josephholsten/69828 to your computer and use it in GitHub Desktop.
#!/bin/sh
# script to backup common files
# see also ~/.backupignore, ~/.archiveignore
print_usage () {
#echo "Usage: ${0##*/} -l"
echo "Usage: `basename $0` [-l | -x | -r]"
return 0
}
generate_manifest () {
ls -R /backup > /backup/Manifest
}
backup_rsync () {
rsync $params $verbose $src $dest
}
case "$1" in
"") print_usage; exit $E_PARAM;;
# No backup type was given, printing usage and quit
"-h" | "--help") print_usage; exit;;
# print extended usage information
"-v"| "--verbose")
verbose="-v";;
# turn on rsync verbose flag
#"-V") # version information
"-l" | "--local")
exclusions="$HOME/.backupignore"
params="-av --del --exclude-from=$exclusions"
src="/Users/joseph/"
dest="/backup/joseph/"
backup_rsync;;
# local backup specified, backup home directory to somewhere on the same hard drive.
"-r" | "--remote" )
# destructively backup home
params="-rltvz --del"
src="/backup/joseph/"
dest="joyent:backup/joseph"
backup_rsync
# safely backup archives and media
params="-rltvz --exclude-from=$HOME/.archiveignore"
src="/backup/"
dest="joyent:backup"
backup_rsync;;
# remote backup specified, backup from local backup to strongspace remote
"-x" | "--external" )
generate_manifest
# destructively backup home
params="-av --del"
src="/backup/joseph/"
dest="/Volumes/janice/backup/joseph"
# dest="/Volumes/Macintosh\ HD/backup/joseph"
backup_rsync
# safely backup archives and media
params="-av"
src="/backup/"
dest="/Volumes/janice/backup"
# dest="/Volumes/Macintosh\ HD/backup/joseph"
backup_rsync;;
# remote backup specified, backup from local backup to external harddrive`
*) print_usage; exit $E_BADARGS;;
# Something unexpected happened! print usage and quit
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment