The useful part, up front

What you’ll take away

  • A snapshot’s logical size, exclusive payload and physical allocation answer different questions.
  • Removing a root makes content unnecessary only when no retained root still needs it.
  • The combined effect of removing several roots can exceed their initial individual exclusive amounts.
  • Mixed storage packs and rewrite order can delay reclamation or require temporary space.
  • Several restore choices can share one payload instance; snapshot count does not establish independent copies.
01

A snapshot size is not a promise of recoverable disk space

A backup application can show a substantial snapshot, remove that snapshot from its list, and recover surprisingly little disk space. Those observations can all be consistent. The snapshot describes a saved state; some of the data needed for that state may also support other snapshots. Removing one saved state does not make its shared data unnecessary. Borg's 1.4.5 documentation explicitly distinguishes an archive's exclusive stored data from the repository's combined data. [2]

Three questions therefore need separate answers: how much file content does this snapshot describe, which stored pieces would become unnecessary if it disappeared, and how much space has actually been reclaimed? We will work through an original miniature repository to answer them. Every size counts only uncompressed data payload in MiB, with one MiB equal to 1,048,576 bytes. Metadata, indexes, encryption overhead, padding and filesystem allocation are excluded. This is an accounting example, not an observed backup run. Its purpose is to explain why a displayed size, a deletion decision and a free-space change need not match.

The snapshot recipes reuse the same five content identities. Original content weights: A 4, B 3, C 2, D 1 and E 5 MiB. Each snapshot references every listed piece once.
Original content weights: A 4, B 3, C 2, D 1 and E 5 MiB. Each snapshot references every listed piece once. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
02

Shared content can survive a changed filename

Deduplication avoids storing another payload copy when the repository already has the same content piece. In Borg's documented approach, files are divided into content-defined, variable-length chunks and reuse can span different backups or machines within the same repository. Its explanation does not require filenames or chunk positions to stay unchanged. [1] A renamed document and a wholly new document therefore raise different storage questions, even when both appear as changes in a folder listing.

For our model, five content identities have fixed sizes: A is four MiB, B is three, C is two, D is one and E is five. The letters identify content, not filenames or backup dates. We stipulate that matching letters mean exactly the same bytes. A snapshot's manifest supplies the information needed to assemble its files from those pieces. Looking only at the manifest's name or creation date would conceal these sharing relationships. A later date does not, by itself, imply another physical copy of every earlier byte.

03

Three snapshots describe twenty-seven MiB using fifteen MiB of payload

Give the first snapshot the pieces A, B and C. Its described payload is four plus three plus two, or nine MiB. The second snapshot needs A, B and D, totaling eight MiB. The third needs A, D and E, totaling ten. Adding the three snapshot sizes gives twenty-seven MiB, but that calculation counts A three times and counts B and D twice. Those repetitions describe references to the same stored pieces in our repository.

The combined stored payload contains A, B, C, D and E once each: four plus three plus two plus one plus five equals fifteen MiB. That is the amount needed to support all three manifests under the model's assumptions. The difference of twelve MiB reflects repeated references in the logical total; it is not a measurement of filesystem space saved. Compression, for example, would introduce another size boundary. Borg separately documents that individual archive deduplicated values do not simply add to its repository value. [2] Reading the column's definition matters before doing arithmetic.

04

Deleting the eight-MiB snapshot releases no unique payload

Now remove the second snapshot from the set we intend to retain. It described eight MiB, but A is still needed by snapshots one and three. B is still needed by snapshot one, and D by snapshot three. Every piece it referenced remains useful. Its removal makes zero MiB of payload newly unnecessary. This does not say that its manifest occupies zero bytes; manifest storage sits outside the deliberately limited payload account.

The other snapshots behave differently. Only snapshot one needs C, so removing that snapshot alone makes two MiB unnecessary. Only snapshot three needs E, so removing it alone makes five MiB unnecessary. The initial exclusive amounts are therefore two, zero and five MiB. Together they total seven, leaving eight MiB shared across snapshots. This is why adding exclusive sizes does not recover the fifteen-MiB combined total. Borg's per-archive exclusive meaning illustrates the same distinction. [2] An archive can be useful as a restore choice even when it contributes no exclusive payload.

Removing the same two roots gives different step-by-step credit. Original model; snapshot 3 remains. Marginal amounts depend on the roots present at each step, but the final live union is the same.
Original model; snapshot 3 remains. Marginal amounts depend on the roots present at each step, but the final live union is the same. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
05

The effect of a second removal depends on what remains

Suppose the retained set will contain only snapshot three. Removing snapshot one first makes C's two MiB unnecessary. Removing snapshot two afterward then makes B's three MiB unnecessary, because snapshot one no longer needs it. The total is five MiB. Reverse the order and the first removal, of snapshot two, contributes zero; the later removal of snapshot one contributes both B and C, totaling five. Both paths finish with A, D and E.

The order changes which step receives credit, but it does not change the final ten-MiB live payload. Adding the original individual estimates, two plus zero, would miss B's three MiB because B initially had two references. Once both referencing roots disappear, that shared piece becomes unnecessary too. This is a useful way to read an estimated saving: ask which other snapshots are assumed to remain. A size calculated for removing one item in isolation is not automatically an additive budget for removing a group.

06

Sharing objects does not make this model a chain of snapshots

It is tempting to imagine snapshot two as a patch that can only be opened through snapshot one. That is not how we defined these manifests. Snapshot two has its own complete recipe for A, B and D. If snapshot one disappears, the pieces that snapshot two still needs remain in the repository. Shared storage and a required chain of earlier snapshot files are different relationships. Our model explicitly assumes complete recipes, not a sequence of incremental patches.

The distinction explains what a retained root protects. Kopia's maintenance documentation describes identifying content that cannot be reached from any active snapshot. [5] In our model, retaining snapshot three protects its route to A, D and E even when older roots are absent. But a manifest alone is insufficient: the referenced pieces must still be present and usable. A useful reading of a backup inventory therefore connects a saved state to the data it actually depends on, rather than inferring dependency purely from the order of dates in the list.

07

A new snapshot can change an old snapshot’s exclusive size

Add a fourth snapshot whose payload recipe is identical to snapshot three: A, D and E. It describes ten MiB but introduces no new content pieces. The live payload stays fifteen MiB. There would still be new snapshot metadata in a real system; the zero refers only to the additional data payload in this model. The fourth snapshot can have a separate date or label without implying another stored copy of A, D or E.

Something less obvious happens to snapshot three. E used to belong only to it, giving it five MiB of exclusive payload. E is now shared with snapshot four, so snapshot three's exclusive amount falls to zero although none of its file content changed. Remove snapshot three alone and all its content remains needed. Remove both three and four while retaining one and two, and E's five MiB becomes unnecessary. Exclusivity describes a relationship with the current retained set; it is not a permanent property stamped onto a snapshot when it is created.

A new identical recipe changes exclusivity without changing old content. Original extension: snapshot 4 references A, D and E, exactly like snapshot 3. Metadata is excluded from all payload figures.
Original extension: snapshot 4 references A, D and E, exactly like snapshot 3. Metadata is excluded from all payload figures. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
08

Removing a reference and recovering allocation are separate stages

So far, “unnecessary” has meant that no retained snapshot needs a piece. It has not meant that the storage device has already recovered its space. Restic's 0.19.1 guide separates forgetting snapshots from pruning the underlying data that is no longer referenced. [4] Borg's 1.4.5 guide likewise distinguishes archive deletion from the compaction that recovers repository space. [3] The application may finish one stage while another still has work to do.

Kopia also documents maintenance safety delays, so a cleanup's effects need not appear immediately. [5] These are specific documented systems, not a universal timing promise. To interpret our example, keep a small ledger: roots one and two removed; live payload ten MiB; newly unreachable payload five MiB; physically reclaimed payload still to be established. Those entries can be simultaneously correct. Waiting for a number to change is not a substitute for identifying which stage that number reports, and a disappeared snapshot name does not prove that every former payload object has been erased.

09

A storage file can contain both wanted and unwanted pieces

Now add a separate packing rule to the same example. Pack one contains A and C, totaling six MiB. Pack two contains B and D, totaling four. Pack three contains E, totaling five. Together they hold the original fifteen MiB. After retaining only snapshot three, A, D and E remain needed, while B and C do not. Yet each of the three packs still contains at least one needed piece.

If this imagined storage layer can reclaim only an entire unused pack, it cannot reclaim any of these packs as they stand. Five MiB is unnecessary at the content level, but zero MiB sits in a wholly unnecessary pack. Restic describes distinguishing fully used, partly used and unused repository files, with partly used files potentially repacked. [4] Our small arrangement explains that distinction: recovering the unwanted space inside a mixed pack requires a different operation from dropping a completely unused pack. The content map and the packing map answer different questions.

Unused pieces can remain inside packs that still contain live data. Original packing extension after retaining only snapshot 3. All three packs still contain live content; none is wholly unused.
Original packing extension after retaining only snapshot 3. All three packs still contain live content; none is wholly unused. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
10

Repacking can first increase the occupied payload

Choose one explicit rewrite plan for the mixed packs. Write a new five-MiB pack containing the still-needed A and D. Keep pack three, containing E. During the write, leave the old packs in place. At that point the payload account contains the original fifteen MiB plus the new five, giving a temporary peak of twenty. Then retire old packs one and two, whose combined size is ten MiB. The final payload is ten MiB, as the retained snapshot requires.

The plan recovers five MiB overall but temporarily needs five MiB beyond the starting amount. That is not a contradiction: the surviving content exists twice during the transition. Restic documents storing repacked files before deleting obsolete files and notes the need for working space. [4] Our twenty-MiB peak belongs only to this declared rewrite order and payload-only model. Actual allocation and metadata can change the required headroom. The useful insight is that the final smaller state does not, by itself, show that every intermediate state will fit.

11

Three restore choices are not three independent copies of A

Return to the original three snapshots. All of them depend on A. If the repository loses its only usable copy of A, each of those snapshot recipes is missing a required piece. Three visible restore choices do not create three independent physical copies of that shared content. This follows from the model's reference map; it does not assign a failure probability to any storage product or claim that a particular backup has been damaged.

Retention and integrity therefore ask different questions. Retention chooses which saved states remain available in the intended history. Integrity asks whether their required data and reconstruction information still work. The zero-exclusive second snapshot can preserve a useful historical combination of A, B and D, but it does not add an independent copy of A. Conversely, a repository with every shared piece intact may still lack a desired old state if its manifest has been removed. Counting snapshot labels alone cannot answer either question completely.

12

Read the definition, retained set and cleanup state together

A useful reading record begins with the unit and the kind of size: described file content, exclusive content, combined live content, stored pack payload or filesystem allocation. Next identify the snapshots assumed to remain. Then record whether the application has only removed references, identified unused content, rewritten mixed storage or actually reclaimed allocation. The distinctions come from documented reporting and maintenance behavior, but the numerical relationships need the account's own assumptions. [2][3][4][5]

Our original three snapshots describe twenty-seven MiB while sharing fifteen MiB of payload. Removing the eight-MiB second snapshot alone makes no payload unnecessary. Retaining only the third makes five MiB unnecessary, yet the chosen mixed packs initially permit no whole-pack deletion. The declared rewrite briefly reaches twenty MiB before ending at ten. Each number is correct for its own question. Preserve those questions alongside the figures, and a surprising free-space result becomes something you can interpret precisely rather than judge by the largest number on the screen.

A smaller final repository can require a larger intermediate state. Original declared rewrite order: write a new A + D pack before retiring old packs 1 and 2. Payload only; actual allocation is not predicted.
Original declared rewrite order: write a new A + D pack before retiring old packs 1 and 2. Payload only; actual allocation is not predicted. · Ameer Journal — original explanatory diagramOriginal editorial illustration; no third-party artwork reused.
Follow the evidence

Sources & further reading

Explore the references behind this guide. External pages may change after our review.

  1. Borg Documentation — Borg - Deduplicating Archiver 1.4.5 documentation
    BorgBackup · Accessed 7 Nov 2026
  2. borg info — Borg - Deduplicating Archiver 1.4.5 documentation
    BorgBackup · Accessed 7 Nov 2026
  3. borg compact — Borg - Deduplicating Archiver 1.4.5 documentation
    BorgBackup · Accessed 7 Nov 2026
  4. Removing backup snapshots — restic 0.19.1 documentation
    restic · Accessed 7 Nov 2026
  5. Maintenance | Kopia
    Kopia · Accessed 7 Nov 2026

Article updated 7 Nov 2026.

Found something we should revisit?

Good explanations get better with thoughtful feedback.

Suggest a correction