Get unlimited free for 30 days!Register for a free account and start syncing today. No credit card required.Register now →
GodwitGodwit Sync
HomePricingDownloadsDocs
Customer PortalGet Started
Get Started
Incremental Sync

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.

Get StartedRegister now
Database-driven 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 TB

Incremental 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

Migrate the complete version chain
Transfer current and noncurrent versions plus delete markers, with a per-key summary of any history gaps.
Learn more
Restore a past snapshot
Restore the source as it existed at an exact time or a relative point such as three days ago.
Learn more
Continue interrupted transfers
Keep completed objects and multipart parts, then retry only unfinished work.
Learn more

Reuse a completed run as the baseline.

Create free accountReview the CLI reference

Use --plan-only to inspect the delta, and --override when latest-mode objects can change.

Godwit Sync

Production-grade S3 migration and ongoing synchronization. Control, predictability, and safety at scale.

Product

  • Pricing
  • Documentation
  • Changelog

Legal

  • Terms of Service
  • User Agreement
  • Privacy Policy

© 2026 Godwit Sync. All rights reserved.

Version v1.1.18

Amazon S3, MinIO, Ceph, Cloudflare R2, Backblaze B2, Wasabi, and all other third-party product names, logos, and trademarks referenced on this site are the property of their respective owners and are used for identification purposes only. Their use does not imply any affiliation with or endorsement by them.