Feature: differential/incremental backups #19

Open
opened 2026-06-02 20:29:32 +00:00 by jmiller · 1 comment
Owner

Only back up files changed since the last backup to reduce size and time.

Description

For large sites, full backups can take a long time and use significant storage. Differential backups only include files modified since the last full backup.

Requirements

  • Track file modification times from last backup
  • New backup_type: "differential"
  • Differential backup references a base full backup
  • Restore must apply: base full + differential
  • Database is always fully dumped (no incremental DB)

Implementation Notes

This is complex — store file manifest (path + mtime + size) from each full backup, then compare on next run. Restore needs to layer diffs on top of base.

Only back up files changed since the last backup to reduce size and time. ## Description For large sites, full backups can take a long time and use significant storage. Differential backups only include files modified since the last full backup. ## Requirements - [ ] Track file modification times from last backup - [ ] New backup_type: "differential" - [ ] Differential backup references a base full backup - [ ] Restore must apply: base full + differential - [ ] Database is always fully dumped (no incremental DB) ## Implementation Notes This is complex — store file manifest (path + mtime + size) from each full backup, then compare on next run. Restore needs to layer diffs on top of base.
jmiller added the type: featurepriority: lowcomponent: enginestatus: blocked labels 2026-06-02 20:29:32 +00:00
Author
Owner

Testing Plan

TC-F6.1: Differential creation

  1. Run full backup
  2. Modify 3 files, add 1 new file
  3. Run differential backup
  4. Verify diff archive only contains 4 files + database.sql
  5. Verify diff archive size << full backup size

TC-F6.2: Differential restore

  1. Restore from full backup
  2. Apply differential on top
  3. Verify all changes from diff are present

TC-F6.3: Multiple differentials

  1. Full backup > modify files > diff 1 > modify more files > diff 2
  2. Restore: full + diff 2
  3. Verify latest state restored correctly

TC-F6.4: No changes

  1. Run full backup
  2. Run differential immediately (no changes)
  3. Verify diff archive contains only database.sql
## Testing Plan **TC-F6.1: Differential creation** 1. Run full backup 2. Modify 3 files, add 1 new file 3. Run differential backup 4. Verify diff archive only contains 4 files + database.sql 5. Verify diff archive size << full backup size **TC-F6.2: Differential restore** 1. Restore from full backup 2. Apply differential on top 3. Verify all changes from diff are present **TC-F6.3: Multiple differentials** 1. Full backup > modify files > diff 1 > modify more files > diff 2 2. Restore: full + diff 2 3. Verify latest state restored correctly **TC-F6.4: No changes** 1. Run full backup 2. Run differential immediately (no changes) 3. Verify diff archive contains only database.sql
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoJoomBackup#19