Backup + Rescue

RescueVault

Timestamped snapshots you can browse, where unchanged files cost no extra disk.

Free right now — no account, no card

Get RescueVault free Windows & Mac · one file, nothing to install

Preview

1 interface design, then a screenshot of it running. Drag, scroll or use the arrows.

Interface design RescueVault, 1 of 1
Screenshot RescueVault running on Windows today

Free while we’re in preview

Get RescueVault

Timestamped snapshots you can browse, where unchanged files cost no extra disk.

The Mac button is for Apple Silicon. On an older Intel Mac, get this one instead.

One file, both ways. Double-click it for the window. Run the same file from a command prompt with arguments and it behaves as the command-line tool, because the engine is inside it. Nothing else to download and nothing to keep beside it.

Early preview. The window has been built and run, but not yet on a real Windows PC or Mac, so expect rough edges. The engine underneath it is fully tested.

  • One file — no installer
  • Runs on your machine, offline
  • Source code published below

Free while in preview. It isn’t signed yet, so Windows or macOS will ask you to confirm the first time you open it. At launch, RescueVault is included in every plan along with the rest of the range.

How a snapshot stays cheap

Every backup run creates a new folder under <vault>/snapshots/<timestamp>/ holding a complete, browsable copy of your source tree. Files unchanged since the previous snapshot are hardlinked to it rather than copied, so twenty snapshots of a mostly static folder cost about one copy plus the changes. It’s the mechanism behind rsync --link-dest and Time Machine.

“Unchanged” here means same size and same modification time. Contents are not hashed, on purpose: hashing everything on every run turns an incremental backup back into a full read of the tree. The gap that leaves is a file whose content changed while both size and mtime stayed exactly as they were, which normally takes deliberate tampering.

Pruning, and getting files back

list shows each snapshot’s file count and its new bytes, meaning what it really copied, read from a manifest written at backup time. prune --keep N removes everything older than the N newest. That’s safe because deleting a directory entry only frees the data once the last link to it is gone, and your kept snapshots still hold theirs.

restore writes real byte copies, never hardlinks, so a restored tree shares no inodes with the vault.

Every command is a dry run until --apply. For retention that thins with age instead of keep-last-N, that’s RestoreGuard.

Reading on the job itself

Advanced & technical details Command-line builds, source code, checksums and a recorded session — for developers and IT teams

A working CLI prototype of the backup engine: hardlink-deduplicated incremental snapshots (unchanged files are hardlinked, not recopied), with list/prune/restore. Disk imaging, boot rescue, and SMART-based recovery scans need raw-device access and are on the roadmap.

Naming status

Working name only — brand verdict **AVOID** (Very High). Collision: RescueVault. Rename completely.

What it draws on

Existing paid software whose best ideas shaped this program: Macrium Reflect X, Disk Drill, R-Studio, Bvckup 2 Pro.

Command line

There is nothing extra to install. The program you download is the command-line tool as well: give it arguments instead of double-clicking it and it runs as one, with its output on your terminal. The standalone builds below are the same engine on its own, for machines where you would rather not ship a window at all.

rescuevault - hardlink-based incremental snapshot backup

Usage:
  rescuevault backup <src> <vaultdir> [--apply]
      Create a new snapshot of <src> under <vaultdir>/snapshots/<id>/.
      Files unchanged since the previous snapshot (same size + mtime) are
      hardlinked, not copied. Without --apply this is a dry run: prints
      what would happen and does not touch disk or create any directory.

  rescuevault list <vaultdir> [--json]
      List snapshots in <vaultdir> with file counts and "new bytes"
      (bytes actually written by that snapshot, excluding hardlinks).

  rescuevault prune <vaultdir> --keep N [--apply]
      Keep the N most recent snapshots, remove all older ones. Without
      --apply this is a dry run. Safe by design: removing an older
      snapshot directory only removes directory entries, never the
      underlying file content still referenced by a hardlink in a
      newer, kept snapshot.

  rescuevault restore <vaultdir> <snapshot-id> <destdir> [--apply]
      Copy every file from a snapshot into <destdir> as real byte
      copies (never hardlinks back into the vault). Without --apply
      this is a dry run.

  rescuevault help | -h | --help
      Show this message.

Recorded from the shipped binary, not written by hand.

Source

Every file the program is built from:

console.go · console_test.go · guided.go · main.go

SHA-256 checksums · build instructions & scope notes · full build plan