Your drives will fail. Your data won't.
Split backups across multiple drives so no single drive holds your complete data. Lose a drive? Pull a new one, recover, keep going. It's math, not luck.
Your backup is split into N+K pieces using Reed-Solomon erasure coding — the same math that keeps CDs readable despite scratches. Lose up to K drives and still recover everything from any N.
Optional AES-256-GCM encryption with Argon2id key derivation. When enabled, each drive holds one piece — encrypted, incomplete, and useless on its own.
ZIP/Deflate compression is on by default. BFS detects already-compressed files (photos, videos, archives) and skips them — no wasted CPU, smaller pieces.
USB drives, external HDDs, NAS, FTP/FTPS servers, network folders — anything that can hold a file. Mix and match across providers. No cloud subscription required. No vendor lock-in.
Each backup creates a new numbered version. Keep the last 7, or 30, or all of them. Verify health, prune old ones, restore from any point.
One drive offline mid-backup? BFS doesn't give up. It keeps uploading to the rest and remembers exactly which ones failed — so later you fix and retry only those, not the whole thing.
Every piece of your backup carries a map to all the others. Find one surviving drive, run bfs recovery — your config, your files, everything comes back.
# 2 data + 1 parity = 3 providers (mix local disks and FTP/FTPS)
bfs init mybackup --ci --data-shards 2 --parity-shards 1 \
--provider "local:disk1 --path /mnt/disk1" \
--provider "local:usb --path /mnt/usb" \
--provider "ftp:nas --config-file ./nas.json"
# Each push creates a new versioned snapshot
bfs push # backup → new version
bfs pull # restore latest version
# Plug in ANY ONE drive — BFS reads the recovery map and finds the rest.
# --name = backup name (same as `bfs init mybackup`); --bootstrap = same adapter flags.
bfs recovery --provider local --name mybackup \
--bootstrap "--path /mnt/disk1"
bfs pull # restore files as usual
| Command | Description |
|---|---|
| bfs init | Initialize a backup in the current directory |
| bfs push | Backup current directory → new version |
| bfs pull | Restore files from backup |
| bfs status | Show backup health and version info |
| bfs verify | Check piece availability across providers; flag missing/damaged header files |
| bfs recovery | Rebuild backup config from provider pieces |
| bfs repair | Fix storage locations without re-uploading — repoint a moved device, rebuild a lost piece, or restore missing/damaged header files |
| bfs prune | Delete old backup versions |
| bfs versions | List all versions with health status |