Borg Backup
"The holy grail of backup software?"
Thomas Waldmann @ EuroPython 2016
Borg - a fork of Attic
-
Attic: about 5y old, good design, proven code
-
but:
-
development going slowly
-
some bugs and annoyances
-
not very open to new developers
-
-
Borg Backup: fork of Attic, now ~1y old
-
and:
-
a community project, bus_factor++
-
lots of fixes and good PRs merged
-
open and inviting to new contributors
-
faster paced, lots of activity
-
Feature Set (1)
- easy and fast
- content-defined chunking (*)
- chunk deduplication (*)
- lz4, zlib, lzma compression
-
encryption with AES256
-
authentication with HMAC-SHA2
-
simple backend (k/v, fs, via ssh)
Feature Set (2)
-
FOSS (BSD license)
-
good docs
-
good platform / arch support
-
xattr / acl / bsdflags support
-
mount a backup via FUSE
-
Python 3.4+, a little Cython & C
-
good test coverage, CI
Deduplication (1)
-
No problem with:
- VM images (sparse file support)
- (physical) disks, LV snapshots
- renamed huge directories
- inner deduplication of data set
- historical deduplication
- dedups different machines
Deduplication (2)
-
Content defined chunking:
- "buzhash" rolling hash
- cut data when hash has specific bit pattern,
yields chunks with ~ 2^n bytes target size - n + other chunker params configurable now
- seeded, to avoid fingerprinting chunk lengths
-
Store chunks under id into store:
- id = HASH(chunk), or
- id = HMAC(id_key, chunk)
Now and Future
-
1.0 released -- important: use 1.0.6+
-
soon: 1.1 (new features, code cleanup)
-
1.2 Crypto Enhancements
- AES-GCM (AES-OCB? chacha20-poly1305?)
- Key Management
- Ciphersuite Flexibility
-
1.2 Parallelization
- "Serial Threaded Workers" (avoids races)
- or use py /cy async instead of threads?
Borg Backup - Links
github.com/borgbackup
#borgbackup on chat.freenode.net
Questions / Feedback?
OpenSpace meeting: introduction into the code
Sprints (Sat/Sun): more code intro + hacking ;-)
BorgBackup LT (EP2016)
By Thomas Waldmann
BorgBackup LT (EP2016)
- 2,256