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