(a fork of Attic)
"The holy grail of backup software"
Thomas Waldmann @ GPN16
authenticated encryption
easy pruning of old backups
simple backend (k/v, fs, via ssh)
FOSS (BSD license)
good docs
good platform / arch support
xattr / acl support
FUSE support ("mount a backup")
developed by "The Borg Collective"
more open development
new developers are welcome!
quicker development
redesign where needed
changes, new features
incompatible changes with good reason
thus: less "sta(b)le"
attic repo: ~600 changesets
packaged for many Linux distributions
also in *BSD and Mac OS X dists
more or less works on Windows & Cygwin
Slashdot's "borgbackup 1.0 released" coverage helped quite a bit.
Happy users on Twitter, Reddit and the Blogosphere.
test scalability / reliability / security
be careful!
find, file and fix bugs
file feature requests
improve docs
contribute code
spread the word
create dist packages
care for misc. platforms
borgbackup.readthedocs.io
#borgbackup on chat.freenode.net
Just grab me at the conference!
Thomas J Waldmann @ twitter
borg does error (and even tampering) detection
but not (yet?) error correction
kinds of errors / threat model:
single/few bit errors
defect / unreadable blocks
media failure (defect disk, ssd)
see issue #225 for discussion
implement something in borg?
rely on other soft- or hardware solutions?
avoid futile attempts
sha256, hmac-sha256, crc32 are slow
aes is also slow, if not hw accelerated
faster: poly1305, blake2, sha512-256, crc32c, chacha20
issues:
openssl does not have much recent crypto
openssl 1.1 will have few more / recent algos
libsodium is nice for recent crypto
libsodium can't replace openssl (no aes256-ctr), adds a dependency
packaging issues due to libsodium / openssl 1.1?
currently:
1 AES key
1 HMAC key
1 chunker seed
stored highest IV value for AES CTR mode
encrypted using key passphrase
borg >= 1.0 now has lower RAM consumption
chunks, files and repo index kept in memory
uses bigger chunks (2MiB, was: 64kiB)
less chunks to manage -> smaller chunks index.
be careful on small machines (NAS, rpi, ...)
or with huge amount of data / huge file count
in the docs, there is a formula to estimate RAM usage
hash table implementation in C
e.g. used for the chunks index
uses closed hashing
uses linear probing for collision handling
sometimes slow
use Robin Hood hashing?
needs C or Cython developer
problem: multiple clients updating same repo
then: chunk index needs to get re-synced
slow, esp. if remote, many and/or big archives
local collection of single-archive chunk indexes
needs lots of space, merging still expensive
idea: "borgception"
backup chunks index into a secondary borg repo
fetch it from there when out of sync
other ideas?
I'll show borgbackup using the
"all inclusive" binary.
You could also use:
Source code checkout from github
Release packages from PyPi
Linux / BSD / ... packages
# download the binary and the gpg signature.
...
# verify the gpg signature
gpg --verify borgbackup-linux64.asc
# install / fix permissions
cp borg-linux64 /usr/local/bin/borg
chmod 755 /usr/local/bin/borg
chown root.root /usr/local/bin/borg
# initialize a repository:
borg init /tmp/borg
# create a "first" archive inside this repo (verbose):
borg create -v --stats /tmp/borg::first ~/Desktop
# create a "second" archive (less verbose):
borg create /tmp/borg::second ~/Desktop
# even more verbose:
borg create -v --list --stats /tmp/borg::third ~/Desktop
borg create -v --progress --stats /tmp/borg::third ~/Desktop
# list repo / archive contents:
borg list /tmp/borg
borg list /tmp/borg::first
# extract ("restore") from an archive to cwd:
mkdir test ; cd test
borg extract /tmp/borg::third
# simulate extraction (good test):
borg extract -v --dry-run /tmp/borg::third
# check consistency of repo:
borg check -v /tmp/borg
# info about archive:
borg info /tmp/borg::first
# delete archive:
borg delete /tmp/borg::first
# delete repo:
borg delete /tmp/borg
# connect to remote borg via ssh:
# remote borg needs to be compatible with local
borg init ssh://user@host:22/mnt/backup/borg
borg create ssh://user@host:22/mnt/backup/borg::first ~
# also possible: using sshfs or other locally mounted
# network filesystems, but be careful: worse performance
borgbackup.readthedocs.io
#borgbackup on chat.freenode.net
Just grab me at the conference!
Thomas J Waldmann @ twitter