After reading the excellent Easy Automated Snapshot-Style Backups with Linux and Rsync, I deicided to make a new backup script for my home directory that would keep the last 9 incremental snapshots.
Here is the resulting script:
#!/bin/bash
if [ -n "$1" ] ; then
FROM=$1
else
FROM=/home/username
fi
if [ -n "$2" ] ; then
TO=$2
else
TO=/mnt/arc
fi
LINKTO=--link-dest=$TO/`basename $FROM`.1
OPTS="-Ca --delete --exclude-from=$FROM/bin/rsync-excluded -delete-excluded"
NUMBER_OF_BACKUPS=10
find $TO -maxdepth 1 -type d -name '*.[0-9]'| sort -rn| while read dir
do
this=`expr match "$dir" '.*\([0-9]\)'`;
let next=($this+1)%$NUMBER_OF_BACKUPS;
basedirname=${dir%.[0-9]}
if [ $next -eq 0 ] ; then
rm -rf $dir
else
mv $dir $basedirname.$next
fi
done
rsync $OPTS $LINKTO $FROM/ $TO/`basename $FROM.0`
It would be nice to extend it to add the possibility to create an unlimited number of incremental backups.
P.S. In the plans: a detailed explanation of the payslip calculation in Belgium
