Crate backpak

Source
Expand description

Some big dumb backup system.

See the backup module for an overview and a crappy block diagram.

Modules§

  • Places where we can make a backup repository - the local filesystem, (eventually) cloud hosts, etc.
  • Common backup machinery exposed as channel-chomping threads
  • Defines Blob, our fundamental unit of backup.
  • Cut files into content-based chunks.
  • Performance counters: Count how many times we do various important operations.
  • Diffs two trees and runs a set of callbacks for each difference.
  • Utilities for reading files into buffers and checking magic bytes.
  • Walk filesystem trees and indicate if files have changed.
  • Tools for hashing everything we care about into a unique ObjectId
  • Build, read, and write indexes of packs’ contents.
  • Print trees
  • Build, read, and write compressed packs of blobs, suitable for storing in a backend
  • Change the entire program’s serialization scheme with this one weird trick!
  • A simple SPMC RCU doodad.
  • Tools to traverse a repository, reading blobs
  • Shared utilities to repack blobs, either loose ones in backpak prune or to another repo in backpak copy
  • Build, read and write snapshots of the filesystem to create our backups.
  • Uniquely ID and store directories and their metadata