Both backup tiers stripped .git from every repo — the second tier inherited the bug by being copied from the first
The ticket said ~/bin was not backed up and that --exclude '.git' drops git directories. Half stale, half worse. ~/bin had been added to the path set a fortnight earlier, so claim one no longer described reality. But the exclusion was in BOTH tiers — offsite backup-hourly.sh and local backup-local.sh — because the local tier was written months later by copying the remote one's exclusion list. Two tiers, built at different times for different failure modes, sharing a single defect: restoring from either returned working files with no history, no branches and no remotes. restic patterns are unanchored name matches, so '.git' never meant 'skip a stray folder', it meant 'remove the git directory from every repository in the path set'. Proven by restore, not by reading the pattern: ~/bin from pre-fix snapshot 1297713b gave 190 files and 'not a git repository' from git log, git remote and git fsck; zero .git paths existed anywhere in that snapshot. 15 repos measured in scope, 6 with no remote at all — for those the history existed only on the live disk. Fixed in both scripts; verified by restoring ~/bin from a post-fix snapshot in each tier and asserting 75/76 commits, matching HEAD SHA, branch main and a clean fsck.
Redundancy that shares an origin is not redundancy — when a second tier is seeded by copying the first, it inherits every defect in the copied config, so audit the tiers as one artifact and note in each that its twin must change in the same sitting. Verify a backup by RESTORING and then asserting with the tool that owns the data (git log, git fsck, a DB query) — never by checking that a directory or file name is present, which is the same detector-aimed-at-the-wrong-element failure. And re-verify a P1's premise before fixing it: half of this ticket had already been fixed by someone else, and a ticket that no longer describes reality is itself a finding.
backups · restic · git · disaster-recovery · redundancy · verification