Sync changes since the last completed run
Godwit Sync scans the source and compares each key with a completed SQLite baseline. It creates copy tasks for new or changed objects, marks unchanged objects as skipped, and makes no destination calls during planning.
Incremental sync transfers only new or changed objects
--incremental starts with a full sync when SQLite has no completed run for the same source and destination. A completed run becomes the next baseline, while a run with unfinished tasks resumes instead of creating a new plan.
- Compares size and ETag
- Matches source version IDs
- Keeps destination-only objects
- Counts only copied bytes
# Inspect only the latest incremental planning pass
$ godwit plan inspect \
--run-id daily-backup \
--incremental \
--state-path ./godwit.state.db
# Abridged output
Plan Summary for Run: daily-backup
───────────────────────────────────
Status: completed
Job: 4
Objects:
Total: 82431
Finished: 37
Skipped: 82394
Failed: 0
Data:
Transferred: 12.80 GB
Left: 0 B
Total: 1.41 TBIncremental planning details
How does Godwit Sync detect what changed?
For each source object, Godwit Sync looks up the run ID, key, and version ID in SQLite. Latest mode applies the selected metadata policy, while version-aware mode treats a new source version ID as a new version.
Does incremental sync verify the destination again?
No, incremental planning uses the completed local baseline and never contacts the destination. Run godwit plan verify for checksum validation or a full sync if the destination may have changed outside Godwit Sync.
Are source deletions copied to the destination?
No, a missing source key is absent from the new listing, so the prior destination object remains. The current implementation of incremental sync does not delete destination objects.
How does an incremental run use plan capacity?
Godwit Sync scans the source in full, but only bytes assigned to new or changed copy tasks count toward the per-run limit. Unchanged baseline objects do not count again.
Explore related capabilities
Reuse a completed run as the baseline.
Use --plan-only to inspect the delta, and --override when latest-mode objects can change.