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!
- 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
- The desired size of pack files