Bits of Simplicity

Setting up Deplicity & BackBlaze for automated backups

I got a new Dell XPS recently for development, so naturally I installed Linux, and like any good technophile I wanted an easy way to do backups just in case anything happens. There are a few ways to approach backups. Backing up to a local hard drive, or a remote hard drive, or even the cloud. The criteria I was looking for was automated encrypted cloud backups. I decided on using Duplicity for doing the backups and BackBlaze to be the storage backend.

Duplicity is a software suite that provides encrypted, digitally signed, versioned, remote backup of files. It's GPL, free, and pretty awesome. Duplicity backs directories by producing encrypted tar-format volumes. It uses plain old GnuGP for signing and encryption & rsync for uploads. There is a pretty sweet bash wrapper called duplicity-backup.sh. It allows you to create a configuration file to make working with Duplicity even easier.

BackBlaze is a pretty well known industry leader in cloud storage. They do have backup software and plans if you are windows, but since I am not and want to ensure my backups are secure I went with their B2 Cloud Storage offering. At the time of writing this the first 10 GB of storage is free and the first gig downloaded perday is also free.

Setup

Create a new bucket on BackBlaze. Installing Duplicity on Ubuntu is a peace of cake. Just need to apt-get install

sudo apt-get install duplicity

Then install B2 using pip and python.

sudo pip install --upgrade b2

Next I cloned down duplicity-backup.sh into my home directory.

git clone https://github.com/zertrin/duplicity-backup.sh.git .duplicity-backup

Make a copy of the example config and edit it to suit your needs. At this point you can either use a password for encryption or use/create gpg keys.

cd .duplicity-backup
cp duplicity-backup.conf.example duplicity-backup.conf

After you are done with configuration it is a good idea to test your backup.

./duplicity-backup.sh -b
./duplicity-backup.sh -v

Automation

At this point you should be able to manually backup, but that isn't very much fun. I want it automated. Your first thought might be to setup cron to fire off your backups at set times, but the issue with cron is if you miss the time (laptop is off) then you have to wait for the next cron. Enter anacron. Anacron is a computer program that performs periodic command scheduling, which is traditionally done by cron, but without assuming that the system is running continuously. Thus, it can be used to control the execution of daily, weekly, and monthly jobs on systems that don't run 24 hours a day. Prefect for firing our backups. It is installed on most systems by default. I decided to create a user anacrontab.

mkdir -p ~/.anacron/{etc,spool}
vim ~/.anacron/etc/anacrontab


# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# period delay job-identifier command
1 1 duplicity.backup $HOME/.duplicity-backup/duplicity-backup.sh -c $HOME/.duplicity-backup/duplicity-backup.conf -b

Then add a crontab to ensure anacron fires.

crontab -e
@hourly /usr/sbin/anacron -s -t $HOME/.anacron/etc/anacrontab -S $HOME/.anacron/spool

And that is it! Anacron logs to syslog, so to check that it is running you can simply fire it off by hand and check the syslog.

/usr/sbin/anacron -s -f -t $HOME/.anacron/etc/anacrontab -S $HOME/.anacron/spool

 

sudo cat /var/log/syslog | grep duplicity.backup

 

Backups should be encrypted and automatic. If an issue ever comes up just restore using Duplicity.