Compare commits

..

2 Commits

Author SHA1 Message Date
librelad
8315a58226 Merge claude/2 2026-05-23 18:27:28 +01:00
librelad
036f72d3c2 fix(backup): verify against snapshot restorability, not the live dir
With live dumps + container-side file captures the live app dir intentionally
differs from the snapshot (raw DB dirs and private trees are excluded, replaced
by dumps/captures), so the old source-vs-restored file-count check false-failed.
The scratch restore succeeding already proves restorability (restic hash-checks
every blob); keep a non-empty sanity check instead.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: librelad <librelad@digitalangels.vip>
2026-05-23 18:27:28 +01:00

View File

@ -23,16 +23,21 @@ backupVerifySnapshot()
return 1
fi
local source_count restored_count
source_count=$(sudo find "$containers_dir$app_name" -type f 2>/dev/null | wc -l)
# The scratch restore above succeeding is the real proof the snapshot is
# restorable (restic verifies each blob's hash as it restores). We can't
# compare against the live app dir any more — the live path deliberately
# differs from the snapshot (raw DB dirs and private file trees are excluded
# and replaced by dumps/captures under .lp-backup) — so just sanity-check the
# restore produced a non-empty tree.
local restored_count
restored_count=$(sudo find "$scratch$containers_dir$app_name" -type f 2>/dev/null | wc -l)
sudo rm -rf "$scratch"
if [[ "$source_count" -ne "$restored_count" ]]; then
isError "Verify file-count mismatch for $app_name (source=$source_count restored=$restored_count)"
if [[ "$restored_count" -lt 1 ]]; then
isError "Verify FAILED for $app_name — restored snapshot is empty"
return 1
fi
isSuccessful "Snapshot ${snapshot_id:0:8} verified — file count matches ($source_count)"
isSuccessful "Snapshot ${snapshot_id:0:8} verified — restored $restored_count files"
}