Distributed Backup CLI with Reed-Solomon Erasure Coding
Encrypt, split, distribute — reconstruct from any N of N+K shards. No cloud lock-in. No single point of failure.
Optional, per-vault encryption with Argon2id key derivation. No password — no data. Shards are opaque binary blobs.
Configurable erasure coding. Set your own N data shards and K parity shards. Lose up to K providers — data still reconstructs from any N.
Local disk, USB drives, network-mounted folders. Google Drive, FTP, SSH/SFTP — coming soon. Each provider holds exactly one shard per version.
Every push creates a new version. Verify shard health, prune old versions, or recover everything from a single found shard — no config needed.
Every shard carries an encrypted map of all other shards' locations. One shard is enough to discover and reconstruct the rest — no master index, no coordination server, no single point of control.
# 3 data shards + 1 parity = 4 providers total
bfs init --name mybackup --data-shards 3 --parity-shards 1
# One provider per shard (local disk, USB, NAS…)
bfs provider add --type local --path /mnt/disk1
bfs provider add --type local --path /mnt/disk2
bfs provider add --type local --path /mnt/disk3
bfs provider add --type local --path /mnt/disk4
bfs push # backup → new version
bfs pull # restore files
# Disaster recovery — no .bfs/ config needed
bfs recovery --provider local --path /mnt/disk1
| Command | Description |
|---|---|
| bfs init | Initialize vault in current directory |
| bfs push | Backup current directory → new version |
| bfs pull | Restore files from backup |
| bfs status | Show vault health and version info |
| bfs verify | Check shard availability across providers |
| bfs recovery | Rebuild vault config from provider shards |
| bfs prune | Delete old backup versions |
| bfs versions | List all versions with health status |