VibeVault
One-way mirror backup to Backblaze B2 with a mass-deletion guard


What it is
VibeVault mirrors local folders to Backblaze B2. The rule it is built on is that local is the source of truth and sync is one-way, so the backup can never push a mistake back to my disk.
It is a single Rust binary with a GTK4 and libadwaita GUI. Rather than shelling out to rclone, it embeds it through the librclone crate and configures the B2 backend in memory per run, so no plaintext key files ever exist; credentials live in the keyring. The safety property I most wanted is the deletion guard: before every sync it diffs source and mirror, and if the run would delete more than 500 files or 25% of the mirror, it aborts and records a sample of what it would have removed.
It is feature-complete, with point-in-time and full-mirror restore, a stale-backup watchdog, monthly integrity checks, and a single-listing fast path that finishes an unchanged sync of 58,000 files in about 20 seconds.
Features
- Strictly one-way mirror, local is always the source of truth
- Deletion guard aborts a run that would remove over 500 files or 25% of the mirror
- Embedded rclone via librclone, so no external rclone binary at runtime
- B2 credentials in the system keyring, configured in memory per run
- Point-in-time and full-mirror restore within a 90-day version window
- systemd user timer with a stale-backup watchdog and monthly SHA-1 verification
Stack
~7,300 lines of Rust · 30 tests · ~20 s no-change sync over 58k files