Home
### 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://root@REMOTE.HOST/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 ====