Many people, myself included, have referred to the following style backups as "forever forward incremental"
rclone sync source: dest:current --backup-dir dest:backups/<date>
I've been thinking about this* for a while and I think it is incorrect classification to call it "forward incremental". I believe this should be classified as "reverse incremental".
Let me explain.
Let's ignore the "forever" part. It just muddies the waters.
As I understand it, incremental backup looks like:
Run 0: Full-Backup0
Run 1: Full-Backup0 + diffs1
Run 2: Full-Backup0 + diffs1 + diffs2
...
Run N: Full-Backup0 + diffs1 + diffs2 + ... + diffsN
You need to take the initial Full-backup0
and play forward the chain of diffs to get to any arbitrary state
Reverse incremental, as I understand it is as follow:
Run 0: Full-Backup0
Run 1: Full-Backup1
Mods0
Run 2: Full-Backup2
Mods0 Mods1
...
Run N: Full-Backup2 ... Full-BackupN
Mods0 Mods1 ... ModsN-1
This is also what the aforementioned rclone command returns. At any given point in time, the full backups (dest:current
) is the most up to date with the mods to get there (dest:backups/<date>
) being ModsN-1
. To get to an arbitrary state, you start at Full-BackupN
and replay in reverse until you get to the desired state.
What do you think? Am I totally missing something? Do I have it all wrong?
It is of near-zero consequence, but I propose we refer to this style as reverse-incremental (in so much as we have collective action).
*: I am working on a tool that mimics this, wrapping rclone, but saves the listing of the dest:curr
directory to speed it up. Stay tuned.