v0.1.0  ·  AGPL-3.0  ·  Node.js >= 23

BFS

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.

npm install -g bfs-vault
GitHub

Why BFS?

🔐

AES-256-GCM Encryption

Optional, per-vault encryption with Argon2id key derivation. No password — no data. Shards are opaque binary blobs.

🧩

Reed-Solomon N+K

Configurable erasure coding. Set your own N data shards and K parity shards. Lose up to K providers — data still reconstructs from any N.

🌐

Multi-provider

Local disk, USB drives, network-mounted folders. Google Drive, FTP, SSH/SFTP — coming soon. Each provider holds exactly one shard per version.

🗂️

Versioned Snapshots

Every push creates a new version. Verify shard health, prune old versions, or recover everything from a single found shard — no config needed.

🕸️

No Central Authority

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.

Quick Start

1 Initialize a vault
# 3 data shards + 1 parity = 4 providers total
bfs init --name mybackup --data-shards 3 --parity-shards 1
2 Add storage providers
# 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
3 Push & restore
bfs push  # backup → new version
bfs pull  # restore files

# Disaster recovery — no .bfs/ config needed
bfs recovery --provider local --path /mnt/disk1

Commands

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