#!/bin/sh # # $Id: backup,v 1.6 2004/05/29 12:29:52 bb Exp $ # # Backup script for Mac OS X # # xx.xx.2001 bb created for Mac OS X Public Beta # 25.03.2001 bb modified for Mac OS X final # 22.06.2001 bb modified to use ditto # 01.07.2001 bb added handling of the Mac OS X symbolic links in / # and of /dev # 15.07.2001 bb -V removed from ditto command line # 19.08.2001 bb modified the ln and cp commands to be able to write # a new backup over an older one ("ln -s" -> "ln -sf", # "cp -Rp /dev $1/dev" -> "cp -Rp /dev $1") # 30.08.2002 bb modified handling of /cores (with Mac OS X 10.2, # it is a directory, before it was a symlink) # 23.11.2003 bb CVS Id string added # 29.05.2004 bb no longer backup /dev with cp (seems to cause # a hard abort of the while loop with Mac OS X 10.3, # so the backup becomes incomplete); some logging added # if [ "$1" = "" ]; then echo "Usage: $0 " echo " Backup up a HFS+ root file system to the target directory" echo " preserving Mac resource forks and Unix access rights." exit 1 fi if [ $(id -u) -ne 0 ]; then echo "$0: you must be root to use this command" exit 1 fi ls -1a / | while read i; do echo `date` ": begin backup /$i" case "$i" in \.|\.\.|Volumes) ;; var|tmp|etc) ln -sf "private/$i" "$1/$i" ;; cores) if [ -L /cores ]; then # Mac OS X up to 10.1.5 ln -sf "private/$i" "$1/$i" else # Mac OS X 10.2 ditto -rsrcFork "/$i" "$1/$i" fi ;; mach) ln -sf "/mach.sym" "$1/$i" ;; *) ditto -rsrcFork "/$i" "$1/$i" ;; esac echo `date` ": end backup /$i ($?)" done