An interesting tool I've recently discovered is rdiff-backup.
rdiff-backup backs up one directory to another, possibly over a
network. The target directory ends up a copy of the source
directory, but extra reverse diffs are stored in a special
subdirectory of that target directory, so you can still recover
files lost some time ago. The idea is to combine the best
features of a mirror and an incremental backup. rdiff-backup also
preserves subdirectories, hard links, dev files, permissions,
uid/gid ownership, modification times, extended attributes, acls,
and resource forks. Also, rdiff-backup can operate in a bandwidth
efficient manner over a pipe, like rsync. Thus you can use
rdiff-backup and ssh to securely back a hard drive up to a remote
location, and only the differences will be transmitted. Finally,
rdiff-backup is easy to use and settings have sensical defaults.