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!
  • Tools to traverse a repository, reading blobs
  • Build, read and write snapshots of the filesystem to create our backups
  • Uniquely ID and store directories and their metadata

Constants