2 # a incremental rsync backup script
6 LOCKFILE=/var/lock/backup.lock
7 LOGFILE=/var/log/backup.log
8 EXCLUDE_FILE=/etc/backup_excludes
11 RSYNC_OPTS="--bwlimit=500 --exclude-from=$EXCLUDE_FILE --ignore-errors --delete --delete-excluded -axv --backup --timeout=3600"
15 ##################################
19 ##################################
20 # backup one directory
25 DAY=`expr $DAY % $NUM_INCREMENTAL`
26 IDIR=$BACKUP_DIR/incremental/$name/$DAY
31 mkdir -p $BACKUP_DIR/$name
33 echo Backing up $name to $path and $IDIR
34 rsync $RSYNC_OPTS --backup-dir=$IDIR $path $BACKUP_DIR/$name/
38 ############################
39 # grab a lock file. Not atomic, but close :)
40 # tries to cope with NFS
43 machine=`cat "$lck" 2> /dev/null | cut -d: -f1`
44 pid=`cat "$lck" 2> /dev/null | cut -d: -f2`
47 ( [ $machine != $host ] || kill -0 $pid ) 2> /dev/null; then
48 echo "lock file $lck is valid for $machine:$pid"
52 echo "$host:$$" > "$lck"
56 ############################
67 if ! lock_file $LOCKFILE; then
71 trap "unlock_file $LOCKFILE" EXIT
73 ########################
74 # list of backups to perform
76 backup_one /home/ home
78 unlock_file backup.lock