or, in a similar vein, look at this:
http://www.mikerubel.org/computers/rsync_snapshots/(which also links to mirrordir)
And my suggestion is to install "rsback" using apt-get.
It uses the algorithm described and I use it happily.
Basically on day 1 it will create a backup mirrored directory tree - so far so good.
On day 2 it uses hard-links to create a 2nd copy of the tree. This uses (almost) no space. Then it removes and updates files in the original tree for the day 2 backup - this uses as much space as the 'delta'.
It should also be very efficient at doing incremental copies - rsync is highly regarded.
The good thing about it is that you have a complete snapshot history of your tree for browsing as a normal filesystem.
For safety's sake you can make the backup disk read-only during the day and only switch it to read-write whilst the backup is running.
It's better (IMHO) to use something that's seen widespread use and wrap it in some script to tailor it for your system than to write something from scratch and potentially get it wrong

The other nice thing about these is that they work over the network.
What I've been thinking about doing is finding someone elsewhere in the world and set up a reciprocal backup (with encryption) for true off-site backups.