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
- 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 inbackpak copy
- Build, read and write snapshots of the filesystem to create our backups.
- Uniquely ID and store directories and their metadata