What is BorgBackup ?
BorgBackup is a de-duplication backup tool with support for compression and authenticated encryption. The same ‘binary’
borg acts both as client and server. Data transfer is unidirectional: client to server only. De-duplication/compression/encryption are done on the client side.
borg instances communicate via a specific protocol encapsulate in SSH. Unfortunately there is no support for other protocols (neither SFTP or rsync). Like
rsync it’s possible to restrict the server-side instance to a specific directory via a command restriction.
borg save files by making ‘chunk’ of data. Chunks are stored inside ‘repository’, which must be initialized before usage. Backups, called ‘archives’ in borg-lingo, are repository specific.
As de-duplication/compression/encryption is highly CPU dependent, it’s better to only use what you really need. For example, encryption isn’t strictly necessary if you have a VLAN dedicated for backups and your storage servers aren’t accessible from the internet.
Idem for compression, if you use on the storage server a filesystem with native compression capabilities, like ZFS. For network transfer, a light compression algorithm type lz4 (or zlib=4) is good enough, and don’t introduce a lot of overhead.
Borg’s communication protocol is quite limited. Unlike the rsync protocol, there is no notion of ‘label’. Full path must be specified in client-side configuration. Storage servers must respect the same naming conventions and paths.
More annoying: there isn’t any native mechanism to limit the number of
borg instance. You must rely on ‘dirty’ solution, like calling a wrapper like this one inside the command restriction:
#!/bin/bash INSTANCE_LIMIT=30 INSTANCE_NB=$(pgrep borg-bin | wc -l) BORG_COMMAND=$1 if [ "$INSTANCE_NB" -gt "$INSTANCE_LIMIT" ]; then exit 5 else borg-bin $* fi
Note that you can’t know what the
borg client is doing (creation of repository, archives, etc…) on the server side. Any backup solution based on a push model must take this limit into account.
To my knowledge there is only one backup solution built on
I haven’t tested the product but by the author’s own admission it’s not production ready yet. Note that BorgCube uses the pull model (the server connects to the client via SSH and runs the
borg command with the right parameters) in order to solve the ‘concurrency problem’.