### BORG: a powerful, deduplicating backup system ### | |
Today I discovered a new backuping program called BORG (or "borgbackup"). So | |
far, I was using rdiff-backup - an incremental backuping tool that worked very | |
well for me during a few years. But BORG is better. | |
BORG's homepage: https://www.borgbackup.org/ | |
=== WHY ? ==================================================================== | |
The main difference between the two is that rdiff-backup is an incremental | |
backup, while BORG is a deduplicating backup. Basically this means that if I | |
rename a 1 GB file, rdiff-backup will have to pull it entirely again, while | |
BORG won't. Also, BORG supports archive encryption, while rdiff-backup does | |
not - this is an important factor for me, since I keep my backups on a host | |
that I do not trust that much any more. | |
=== INSTALLATION: ENTER THE PYTHON'S WORLD OF PAIN =========================== | |
The installation process is highly annoying, since the software is a python | |
thing. As with such "modern" stuff, installing anything requires sorting out | |
lots of dependencies, incompatible versions etc, even using the presumably | |
easy "pip3 install" way... At the end of the day, installation of this 10 MiB | |
program required pulling hundreds of MiB of dependencies (gcc, g++, and lots | |
of libraries). Well, life I guess. | |
Anyhow - once the installation process is done, the program works flawlessly. | |
=== QUICK START USAGE ======================================================== | |
These are the commands I use for my needs now. For convenience, I start by | |
defining the following two env variables on the backup-sending host: | |
export BORG_PASSPHRASE='HERE_MY_ENCRYPTION_PASSPHRASE' | |
export BORG_REPO='ssh://[email protected]/srv/borg' | |
...and then: | |
# Initialize a BORG repository on remote server (one time only) | |
$ borg init --progress --encryption=repokey "$BORG_REPO" | |
# Compute, compress, encrypt and send a backup of /root and /srv | |
$ borg create --progress --verbose --compression=zlib \\ | |
"$BORG_REPO"::'{hostname}-{now}' /root /srv | |
# See the list of backups available on remote host | |
$ borg list "$BORG_REPO" | |
# Remove backups, keeping only one per day and no more than 30 | |
$ borg prune --list --stats --keep-daily=30 "$BORG_REPO" | |
# See some nice stats about on-disk data usage of the BORG backups | |
$ borg info "$BORG_REPO" | |
===================================================================== EOF ==== | |