Backup + Rescue

SafeMirror

Audits the backups you already have against the 3-2-1 rule, one file at a time.

Free right now — no account, no card

Get SafeMirror 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 SafeMirror, 1 of 1
Screenshot SafeMirror running on Windows today

Free while we’re in preview

Get SafeMirror

Audits the backups you already have against the 3-2-1 rule, one file at a time.

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, SafeMirror is included in every plan along with the rest of the range.

It makes no backups

SafeMirror never creates, copies, moves or deletes anything. There’s no --apply flag because nothing in it writes. You give it a config naming your source tree and the locations you believe protect it; it hashes every source file and every counterpart and reports, per file, how many good copies exist, on how many distinct media, and whether any of them is offsite.

Each file gets exactly one verdict: PROTECTED, MISSING, STALE, UNDER-REPLICATED, SINGLE-MEDIUM or NO-OFFSITE. When several rule components fail, all of them are still listed under the headline label. safemirror explain work/spec.md gives the whole picture for one file when its verdict surprises you.

The source counts as good copy number one. Two locations declaring the same medium count as one medium. A copy whose SHA-256 differs from the source is stale and contributes nothing.

What it has to take your word for

“Offsite” and “medium” are declarations in your config file. Label the USB disk on your desk as offsite and SafeMirror will believe you and hand back a green audit that is a lie. It sees a path, not a place.

Every audit re-hashes everything, with no size-and-date shortcut, because that shortcut can’t see silent corruption. Runtime scales with total bytes.

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 prototype of a 3-2-1 backup auditor. The sibling tools make backups; this one answers whether the backups you already have actually protect every file — reporting per file how many good copies exist, across how many distinct media, and whether any is offsite. Stale copies are found by content hash, so a backup that is the right size but the wrong bytes is still caught. Strictly read-only: it audits and never writes.

Recorded session

Recorded terminal session showing SafeMirror running
A real recorded session — SafeMirror’s actual output, captured by running the shipped binary.

Naming status

Working name only — brand verdict **CAUTION** (Medium-Low). Collision: SafeMirror. Potential candidate after formal clearance.

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.

safemirror 1.0.0 - 3-2-1 backup rule auditor

SafeMirror does not make backups. It audits the ones you already have and
answers, per file: how many good copies exist, on how many distinct media,
and whether any copy is offsite - then names every file that breaks the rule.

USAGE
  safemirror audit     --config <config.json> [--rule 3-2-1] [--json]
  safemirror locations --config <config.json> [--json]
  safemirror explain   <relative/path> --config <config.json> [--json]
  safemirror config    --example
  safemirror help | -h | --help
  safemirror version

COMMANDS
  audit      Classify every file under the source: PROTECTED, UNDER-REPLICATED,
             SINGLE-MEDIUM, NO-OFFSITE, STALE or MISSING, plus coverage totals
             and the worst offenders by bytes at risk.
  locations  Per backup location: reachability, files present/matching/stale/
             missing, bytes held, declared medium and offsite flag.
  explain    One file: where every copy lives, whether it matches by SHA-256,
             and exactly which part of the rule fails.
  config     --example prints a ready-to-edit config on stdout.

FLAGS
  --config PATH  Config file describing the source and the backup locations.
  --rule A-B-C   At least A good copies, on at least B distinct media, with at
                 least C offsite (default 3-2-1). Try 2-2-1 or 1-1-0.
  --json         Machine-readable report on stdout.

HOW COPIES ARE COUNTED
  The source itself counts as good copy #1, so --rule 3-2-1 needs the source
  plus 2 matching backup copies. Distinct media and offsite copies are counted
  over BACKUP LOCATIONS ONLY: the source has no declared medium and is never
  treated as offsite. Two locations declaring the same medium count once.

CONFIG FORMAT
  {"source":"/data",
   "locations":[{"name":"nas","path":"/mnt/nas","medium":"nas","offsite":false}]}
  medium is one of: hdd, ssd, nas, optical, cloud, tape.
...

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