Storage is becoming cheaper and cheaper: you can find hard drives that cost less than a dollar per GiB. Buying an external hard drive to make backups (or even having a backup server) is a must if you value your work and what you have stored in your computer. However, doing backups should be easy enough to be done on a regular basis. The more automated, the better.

So, I find no excuse not to do regular backups and looked for a tool easy-to-use but powerful. rdiff-backup is a python script that helps doing local and remote incremental backups. To backup your $HOME to an external hard drive mounted in /media/backup simply do:

$ rdiff-backup $HOME /media/backup/home_backup

If after some days you want to backup your new files, run the same command to update the backup.

Now, in /media/backup/home_backup you have an exact copy of your home as it was when you did the last backup. If you want to restore a directory, you can just copy it:

$ cp -a /media/backup/home_backup/src/myprogram ~/src/

Which is equivalent to:

$ rdiff-backup --restore-as-of now /media/backup/home_backup/src/myprogram ~/src/

Of course, you can restore previous versions of the file. For example, to restore the source of myprogram as it was a mounth ago:

$ rdiff-backup --restore-as-of 1M /media/backup/home_backup/src/myprogram ~/src/

You can see all the incremental backups you have done executing:

$ rdiff-backup --list-increments /media/backup/home_backup

If you run out of space in your backup device and you’re sure you don’t need the backups you made three years ago, you can remove them with:

$ rdiff-backup --remove-older-than 3Y /media/backup/home_backup

rdiff-backup works exactly the same with remote directories. You need to have ssh access and rdiff-backup must be installed in the remote(s) machine(s). Note that in any example above, you can change the local directories to remote ones, so you can backup a remote machine locally, or do a backup of this machine to a remote backup-server. For example, say backup.mysite.org is your backup server. You can backup regularly using:

$ rdiff-backup local-dir/ user@backup.mysite.org::/remote-dir

If you use RSA or DSA authentication, you can even put that in a cron job.

See rdiff-backup documentation and other examples to discover all the functionality of this package.

Similar packages

Frontends for rdiff-backup :

keep is a GUI (KDE) frontend for rdiff-backup .

is a GUI (KDE) frontend for . archfs is a fuse (filesystem in userspace) virtual filesystem that lets you browse each version of a rdiff-backup repository as if they were any other directory. Adam Sloboda has stated his intention to package archfs for Debian.

is a fuse (filesystem in userspace) virtual filesystem that lets you browse each version of a repository as if they were any other directory. Adam Sloboda has stated his intention to package for Debian. rdiff-backup-web (not in Debian, no WNPP yet) is a web frontend for rdiff-backup .

There are a ton of other programs to make backups. I will list here some of them (but this list is no where near complete) that are similar to rdiff-backup :

backup2l also makes local backups, but seems to miss the remote-backup feature.

also makes local backups, but seems to miss the remote-backup feature. backuppc is a perl script that also makes incremental backups, and has an http user interface to help manage and restore backups.

is a perl script that also makes incremental backups, and has an http user interface to help manage and restore backups. duplicity also makes remote incremental backups, but encrypts the data using gnupg . I haven’t test it myself, but it can be useful if you don’t trust the remote file server.

also makes remote incremental backups, but encrypts the data using . I haven’t test it myself, but it can be useful if you don’t trust the remote file server. storebackup also makes local incremental backups. It makes a new tree in every snapshot, but disk space is preserved by hard-linking unchanged files.

Conclusions

Pros:

Easy to use. Now there’s no excuse not to do backups!

Works from the command line, so you can easily put it in a script or cron job.

Simple recovery from last snapshot, you can use standard tools like cp or find .

Cons:

Not having a GUI may scare some users.

It stores the last snapshot uncompressed, so depending on what you are backing up, it can be very space consuming. Older snapshots are compressed, which makes this con a not-so-con ;-).