This is an idea I first described in Sept. 2002 on the luga-act mailinglist (members only - password required): First create a copy of the last snapshot as link farm, then use rsync to change only the files which have changed. If the disk fills up, simply remove the oldest tree.

Lots of people seem to have had the same idea independently. You can find similar scripts all over the net and even in print. Rsync has since aquired the new option --link-dest, which promises to do the same.

backup.all (Shell script) 2004-10-05 (1.9 kB)
First release
$Date: 2007-07-01 17:50:08 +0200 (Sun, 01 Jul 2007) $