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