Use Rsync to Backup Data

Reference: http://www.mikerubel.org/computers/rsync_snapshots/

Below is a backup script for backing up /home to /mnt/usb1/backup using rsync.

#!/bin/sh
 
RSYNC_ROOT=/mnt/usb1/backup
 
logmsg() {
    CURTIME=`date`
    echo "[$CURTIME] $@"
}
 
logmsg "rsync /home to $RSYNC_ROOT"
 
COUNTER=7
FIRST=1
NEXT=0
 
while [ $COUNTER -gt 0 ] ; do
    FIRST=$COUNTER
    let COUNTER=COUNTER-1
    NEXT=$COUNTER
 
    [[ -d $RSYNC_ROOT/home.$FIRST ]] && mv $RSYNC_ROOT/home.tmp
    [[ -d $RSYNC_ROOT/home.$NEXT ]] && \
        mv $RSYNC_ROOT/home.$NEXT $RSYNC_ROOT/home.$FIRST
done
 
logmsg "rotated backup directories."
 
if [ -d $RSYNC_ROOT/home.1 ] ; then
 rsync -a --delete --link-dest=$RSYNC_ROOT/home.1 /home/ $RSYNC_ROOT/home.0/
else
 rsync -a --delete /home/ $RSYNC_ROOT/home.0/
fi
 
logmsg "Backup finished!"
 

It works.