| ### 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 ==== | |