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