The safe approach is to treat inventory snapshots, map them to recovery objectives and dependencies, then change retention with a reversible pilot as a sequence of observable gates, not a single command.
On a ZFS or Btrfs home NAS snapshot schedules, the practical risk is snapshot history, capacity use, and recovery coverage no longer match current needs. 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.
Inventory schedules, owners, and actual snapshots
List every snapshot job, dataset or subvolume, frequency, naming rule, retention rule, owner, and last successful run. Then list the snapshots that actually exist. Differences reveal disabled schedules, manually retained exceptions, duplicate tools, or snapshots that a policy no longer owns.
A snapshot is a point-in-time filesystem view, while its space cost grows as live data changes. The Princeton storage guide explains the snapshot space behavior and why retained blocks count against available capacity even when the live tree no longer shows them.
Do not delete anything during inventory. Mark unknown snapshots as protected until their creator, replication role, and restore value are known. The stage passes when every snapshot belongs to a documented policy or an explicit exception.
Match each tier to a recovery question
For each dataset, write the recovery questions it must answer: undo a file change from today, recover a folder deleted last week, roll back an app update, or seed offsite replication. Build hourly, daily, weekly, and monthly tiers only where those windows match real recovery needs.
Count successful recovery points, not scheduled labels. A high-frequency tier that stopped three days ago cannot satisfy a short recovery objective, and a monthly snapshot of rapidly changing app data may be too coarse even if it is old. Include immutable or off-host backups separately because local snapshots are not independent copies.
Remove a proposed tier from the plan if nobody can name a restore case for it. Add coverage when a critical dataset has no snapshot or backup aligned with its change rate, but do not compensate for missing backups by retaining local snapshots forever.
Check space and replication dependencies before pruning
Measure snapshot-held space, live referenced data, pool free space, and recent change rate at the same timestamp. On ZFS, review per-snapshot used and referenced values; on Btrfs, compare subvolume inventory, qgroup data when reliable, and filesystem allocation. Do not predict reclaimed space from a snapshotโs apparent size alone.
Use the ZimaSpace workflow for deciding whether snapshots or recycle bins use NAS space before changing retention. It prevents a visible-folder estimate from being mistaken for blocks held by snapshots or a recycle layer.
Identify snapshots used as incremental replication bases, receive-resume dependencies, bookmarks, clones, or rollback points for current maintenance. If deletion would force a full reseed or break a clone, change the replication plan first and preserve the shared base until the new chain is verified.
Pilot the new rule and prove recovery still works
Apply the new retention rule to one low-risk dataset or preview the deletion list when the tool supports dry run. Save the names and timestamps that would remain, then confirm the oldest and newest recovery requirements are still represented before committing.
After deletion, verify free-space behavior, the next scheduled snapshot, incremental replication, and a restore of one recent and one older file. A policy that saves space but breaks the send chain or removes the only pre-upgrade point has failed.
Adopt the rule only after two schedule cycles produce the intended tiers and alerts cover missed snapshots. Stop and restore the previous policy if replication becomes full-sized, snapshots disappear from the recovery interface, or the remaining history no longer meets the written recovery questions.
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.

Restic Repository Maintenance Workflow: Check, Prune, Compact, and Test Restore
Restic has no separate compact command: prune performs repacking. Protect locks and free space, recheck afterward, and finish with an isolated restore.

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.

