Among
information technology bad practices not backing-up your data is the
one you are going to regret more as something goes wrong. For too
many years I’ve been relying solely on the good health of my disk
drives, that means I was relying mostly on good luck, and on manually
copying data, mostly photos and videos, on different supports. I
decided so to buy myself a bigger disk drive with the sole purpose of
keeping a backup copy of my data.
Hardware
set-up
First
things first, I bought
an external 2TB USB disk. The disk size is enough to backup my 1TB
NAS disk and other data I actually keep on the Raspberry
Pi server or the desktop PC. More importantly the disk is
externally powered since the Raspberry couldn’t power it by itself.
I
formatted the , with the XDS file-system, by using the tool provided
with my NAS disk, after attaching the new disk to the NAS spare USB
port. This step is not strictly necessary but it will allow me, in
future, to share the backup disk just by connecting it to the NAS USB
port.
I
then connected the backup disk to the Raspberry Pi 3 and configured
the /etc/fstab
file in order to mount it on start-up
/dev/sdb1
/media/backup xfs rw,defaults 0 0
Software
set-up: rdiff-backup
While
I was looking for a backing-up software solutions I was mostly
thinking to some directory mirroring tool like RSync but, like often
happens, I stumbled in a more complete solution when I did read this
page describing a backup system based on Raspberry Pi and
rdiff-backup.
Rdiff-backup
is a command line based backup tool, it provide all basic backing-up
features like differential backups or time based restore. More
importantly, to me, it’s based on standards tools like Rsync
directory mirroring and tar archives, meaning that archives are
easily readable without the need of rdiff-backup itself.
I
installed rdiff-backup with apt-get tool:
sudo
apt-get install rdiff-backup
Then
created some target folder in the backup drive
sudo
mkdir /media/backup/public
sudo
mkdir /media/backup/nas
sudo
chown pi:pi /media/backup/public/
sudo
chown pi:pi /media/backup/nas/
Then
I manually started the initial backup, knowing the operation was
going to take some time I started a independent shell session with
the screen
command.
screen
rdiff-backup
--exclude /media/public/BTdownload /media/public/
/media/backup/public/
The
backup command just needs source and destination folders path, many
optional switches are available like the one I used, “--exclude”,
which exclude from the backup process some sub-folder.
Once
the initial backup completed successfully I used the crontab command
to schedule the backup command.
crontab
-e
Since
most of backed-up data are photos and videos I produce during
week-ends I scheduled it weekly ad Tuesday (Monday is already
SD-card backup day)
0
5 * * 2 rdiff-backup --exclude /media/public/BTdownload
/media/public/ /media/backup/public/
Some
notes on performances
The
initial backup of my photos and videos collection, about 300 GB, took
most of the day to complete. The poor performance is mostly because I
keep my data on a Samba share. Rdiff-backup documentation discourages
backing up networked disks through in favor of the better optimized
SSH protocol, unfortunately my NAS disk doesn't support this option.
Not a big problem in my case anyway, because future differential
backups will need less time, of course, and the backup process will
be performed automatically between two always-on devices.