Simple backups with
Tags: howtos, linux
For a long time,
rdiff-backup has been my preferred backup
solution. Recently, however, I started looking for an alternative because its performance simply was
not up to par any more–it took over 20 minutes to process my home directory although less than
1 MiB of files had changed.
Luckily, I stumbled over
Obnam. Joey Hess already adopted it as an
additional backup solution, so I figured I could give it
a try as well. And I was pleasantly surprised: Configuration is very easy, the backup is
sufficiently fast, there’s support for GPG-based encryption, and it offers deduplication. What’s
not to love?
So, my current backup setup for my laptop has a central
.obnam.conf configuration file with the
[config] repository = sftp://example/home/example/backup.hostname.example.com exclude = \.o$, \.tmp$, /Trash/, ...
Of course, the
exclude list is a tad longer in reality. This is the only tedious thing about
Obnam: All excluded files and directories have to be specified as a regular expression in a
single line. I have several folders I do not wish to be transferred, such as caches, downloads,
temporary storage, and the like. For each of these folders, I either added a
/foldername/ or the
full path to the
exclude line so that
Obnam does not include for regular backups. Here are some
recommendations for stuff to exclude:
- A variety of auxiliary files for LaTeX sources, temporary backup files for editors, and so on
With a sufficient exclusion list, I was now able to do backups quite comfortably using
obnam backup $HOME. But there’s more: Since the backup usually does not take very long, I decided to let it run
automatically. I created a small shell script for this:
#!/bin/sh notify-send "Starting obnam backup..." obnam backup $HOME if [ "$?" -ne 0 ]; then notify-send "Unable to finish obnam backup." exit 1 else notify-send "Finished obnam backup." fi
notify-send is a nice little program that allows scripts to send notifications to a window
awesome and GNOME 3
show small notification bubbles for a small period of time. Finally, I added an entry to my personal
Obnam to run every day at 8 o’clock in the evening:
0 20 * * * DISPLAY=:0 /home/example/backup
Note that the
DISPLAY=:0 variable is required so that the notifications of the script are shown.
For systems that are only powered on sporadically, it might also make sense to create a
anacron. So far, the normal
served me well, though.
If you want to use the script yourself, you might want to incorporate a more powerful logging and
notification capability in case
Obnam does not complete its run. For my own use (and for now), I
am content with checking the backup generations created by
obnam generations every
once in a while.