The safe approach is to treat gate schedules, check health, preview retention, prune for repacking, recheck, and perform an isolated restore as a sequence of observable gates, not a single command.
On a Restic repository used by one or more home-server hosts, the practical risk is need to maintain a Restic repository without blocking backups or mistaking space reclamation for recoverability. Record the current identity and recovery point, start with the least invasive discriminator, interpret pass and fail results before changing another variable, and stop when storage becomes unstable or the only recoverable copy would be exposed. The workflow below ends only after the original workload succeeds or the evidence reaches an escalation boundary.
Open a repository-wide maintenance window
Pause backup, forget, check, copy, and prune schedules on every host that can reach the repository. Confirm no live lock owner remains, save the Restic version and repository ID, and test credentials without exposing them in shell history or logs. Repository maintenance is one shared state change, not a per-container task.
If a prior crash left a lock, follow the ZimaSpace workflow for a Restic repository locked after a crash before unlocking. A lock is evidence of ownership; remove it only after the named process, host, timestamps, and backend activity show that the operation is dead.
Check backend free space, inodes or object limits, write permissions, and local cache or temporary space. Stop if the storage path is unstable, immutable retention blocks required deletion, or another writer cannot be paused.
Check structure and sample repository data
Run restic snapshots and a normal restic check, saving output and exit status. Then schedule --read-data or supported read-data subsets according to repository size and bandwidth. Structure-only success does not prove every pack is readable.
A Restic community discussion distinguishes routine check, prune, and rebuild-index roles and explains that index rebuilding is not normal preventive maintenance. Do not run rebuild-index or delete pack files because a check is slow; reserve recovery commands for a diagnosed inconsistency.
If check reports missing packs, hash mismatch, backend read failure, or index inconsistency, stop before prune. Protect the repository, repeat only the failing read through a stable path, and escalate to documented recovery on a copy.
Preview retention, then prune and repack
Run the intended restic forget policy with --dry-run and review kept and removed snapshots by host, path, and tags. Commit forget only when the list preserves required recovery points. Keep a recent verified snapshot outside an experimental policy change when possible.
In Restic, โcompactโ is not a separate command: prune removes unreferenced data and repacks repository files as needed. A current troubleshooting guide describes Restic prune failures, including free-space and lock failures that should be solved before another destructive attempt.
Run prune once, without backup concurrency, and keep its full log. If it fails, do not rerun blindly or delete temporary-looking objects. Recheck locks, free workspace, backend permissions, and the last completed phase; preserve the repository state for diagnosis.
Recheck and perform an isolated restore
After successful prune, run restic check again and complete the planned data-read coverage. Compare snapshot count, repository size, and errors with the pre-maintenance baseline. Space not dropping to an estimate is not failure if retained snapshots still reference the data.
Restore a recent snapshot and an older representative subset into an empty directory. Verify file contents, permissions, timestamps, symlinks, and one application-level artifact. A mount or list operation alone is not a restore test.
Resume schedules only when post-prune check passes, restored data is usable, and a new small backup can be created and restored. Escalate any new corruption, repeated backend error, or incomplete prune before allowing multiple hosts to write again.
Support & Tips
More to Read

Borg Backup Migration Guide for Moving a Repository to New Storage
Move a Borg repository as one consistent object: stop writers, preserve keys and identity, verify restores, then update clients while retaining the source.

Time Machine NAS Recovery Guide for Broken or Abandoned Backup History
Keep the old bundle. Separate NAS access, destination identity, image damage, and abandoned history before choosing repair or a new chain.

Snapshot Retention Review Checklist for a Home NAS
A useful retention review connects every snapshot tier to a restore need, owner, capacity budget, and replication boundary before deleting history.

