Regular and automated backups are hard to get right if you are not on a Mac using TimeMachine.

There are multiple ways to keep and maintain backups on a linux box (rsnapshot, rsync,...). I was searching for a service to create and store encrypted offsite backups which is reasonable cheap. I stumbled upon Tarsnap a number of times now and finally decided to give it a shot.

I just want to have a couple of revisions of a small number of directories in case of a hardware or user fail. Tarsnap's default script isn't covering the revision/rolling backup feature I need, that's why I'm using Tarsnap-generations. It's just a simple script to create new archives from a list of directories and prune old archives after a given timespan. Think of it as a rsnapshot for Tarsnap.

Note: This is not a tutorial, this is just to document my setup for future reference.

For it to work you'll need to set one parameter which isn't set in the default Tarsnap config so just create a .tarsnaprc in your ~ and add

humanize-numbers

You could also exclude some directories and files from your backup path. To do this just use the exclude parameter like this:

exclude /.ssh/
exclude /var/logs

The directories you want to backup should be added to a file called tarsnap.folders in your home directory. (If you are using the same cronjob from Tarsnap-generation's example on Github).

/home/dewey/.znc
/home/dewey/.zsh*
/var/www
/etc
/usr/share
/var/lib/bitlbee

If you manually run the script without waiting for a cronjob to run it, it'll look like this:

tarsnap: Removing leading '/' from member names
                                       Total size  Compressed size
All archives                               2.1 GB           638 MB
  (unique data)                            1.2 GB           371 MB
This archive                               6.2 kB           2.8 kB
New data                                   6.2 kB           2.8 kB
20140202-18-HOURLY-at-notmyhostname-/var/lib/bitlbee backup done.
Verifying backups, please wait.
20140202-18-HOURLY-at-notmyhostname-/var/lib/bitlbee backup OK.
Finding backups to be deleted.

Once the script ran you'll see all your archived backups with the tarsnap --list-archives command.

root@at-notmyhostname ~$ tarsnap --list-archives
20140202-18-HOURLY-at-notmyhostname-/home/dewey/.znc
20140202-18-HOURLY-at-notmyhostname-/home/dewey/.config
20140202-18-HOURLY-at-notmyhostname-/home/dewey/.zshrc
20140202-18-HOURLY-at-notmyhostname-/var/lib/bitlbee

Resources: