Home  ›  Glossary  ›  Reverse Incremental Backup

What is reverse incremental backup?

Reverse incremental backup is a backup method in which the most recent restore point is always a complete full backup. Each job writes changed blocks into that full and saves the blocks it replaces in a rollback file, so older restore points are reached by stepping backwards from the newest one.

How does each job update the chain?

The first job creates a full. On every later job, each block that changed in production goes through three steps:

  1. The block about to be replaced is read from the full.
  2. It is written to that day's rollback file.
  3. The new block from production is written into the full.

The result is a full that matches the latest backup and a series of rollback files, each holding what the full looked like one job earlier. Restoring yesterday means applying yesterday's rollback file to today's full.

Why is the newest restore point the fastest to restore?

Most restores are of the latest data. In a reverse incremental chain that point is a single full file, so nothing has to be assembled, and instant recovery can run it straight from backup storage. In a forward incremental chain the same point sits at the end and depends on every file before it. Older points work the other way round: the further back, the more rollback files a restore applies.

What does the method cost?

Each changed block costs one read and two writes on the backup target, where a forward incremental costs a single write. Jobs take longer to finish on the storage side and generate more random I/O, which suits fast disk better than high-capacity storage. Every older restore point also depends on the one full, so damage to that file affects the whole chain. Removing an expired restore point is cheap: the oldest rollback file is deleted.

Why does it conflict with immutable storage?

The method rewrites the same full file on every run. Immutable storage, whether through S3 Object Lock or WORM, forbids changing data once it is written. The two cannot be combined: a reverse incremental full cannot be locked, because the next job has to modify it. An immutable copy of the same data is kept as a separate chain in a format that writes each file once.

Frequently asked questions

Is reverse incremental the same as a differential backup?

No. A differential stores everything changed since the last full and grows through the cycle. A reverse incremental stores the previous state of changed blocks and keeps the full current.

Does reverse incremental use more capacity?

Not much. It holds one full plus rollback files roughly the size of each day's changes, which is close to a forward chain with a single full.

Why do many designs use forward incremental instead?

Forward chains with synthetic fulls avoid the extra I/O on every job and write files once, which keeps them compatible with immutable storage.