Incremental Backup

Incremental Backups is an advanced method that stores several copies of each backup, not just the last one, but instead of having multiple copies of the entire filesystem, there’s only one full backup, and all other backups are just a copy of the files that have been changed or the newly created files since the last backup.

In order to understand this, let’s say that we have a string of numbers, which goes “1, 2, 3, 4, 5” and we create a full backup of it. Then we add some numbers to the original string, making it “1, 2, 3, 4, 5, 6, 7”. The incremental backup would have the first full backup with content “1, 2, 3, 4, 5” and an incremental backup wth content “6, 7”. If later we add 2 more digits to the string, making it “1, 2, 3, 4, 5, 6 ,7 ,8 ,9”, the next incremental backup would have “8, 9” only as “1, 2, 3, 4, 5” were already stored n the full backup and “6, 7” were stored in the first incremental backup.

Incremental backups can save a lot of space, since most filesystems suffer only slight changes on a daily basis, so the incremental backups only store those changes, and therefore are way smaller than having multiple copies of the entire filesystem. However if the filesystem is modified almost entirely between backups, each incremental backup will be nearly as big as the full backup, rendering the entire incremental backup system useless.

Incremental backups are among the fastest to be created, since only changed files are copied to the backup media, however they are not so fast when it comes to restoring them, as the restore process has to restore the full backup first and then restore each incremental backup from the date of the original backup to the date of the desired restore. Usng the digits example quoted before, the restore procedure would copy the original string “1, 2, 3, 4, 5” first, then it would append “6, 7” and after that it would append “8, 9”, taking 3 steps to restore a simple string.

Incremental backups aren’t always performed on a per-file basis, sometimes they’re also done using block increments or byte level increments, which may be faster as they don’t struggle with filesystem structures but work under the same principle. The resulting restore would include block level or byte level modifications to the file indexes so it’s not a problem for the restored system to “see” the restored files as a whole.