MinIO is frozen. Migrate to S3, RustFS, or Ceph without losing versions or Object Lock.
MinIO Community is frozen. Moving production MinIO at scale? mc mirror and rclone won't carry your version history, your Object Lock settings, or resume cleanly from a 40 TB failure. Godwit Sync preserves all three and resumes from the last verified chunk, keeping the cutover window short and predictable.
Production MinIO migration needs dedicated tooling
MinIO migration at production scale needs more than mc mirror, rclone, or manual scripts.
mc mirror
- No plan-first preview before objects move.
- No chunk-level resume — a failure at 38 TB of 40 TB restarts near zero.
- No per-version checksum beyond ETag.
- Bucket policies and access keys must be recreated manually (confirmed in RustFS migration docs).
rclone
- Memory pressure at 500M+ objects (documented in the rclone forum).
- Hangs on S3 mounts under load.
- --s3-versions has documented bugs where re-runs skip versioned files.
Manual scripts
- No observability.
- No resume from exact chunk.
- No deterministic plan — every rerun behaves slightly differently.
None of this means those tools are bad. It means they weren't designed for the specific shape of MinIO-to-anywhere migrations at production scale.
How Godwit Sync moves MinIO
A plan-first transfer pipeline built for S3-compatible storage at production scale. Survey the source, approve the plan, transfer in verified chunks, and carry versions and Object Lock across intact.
Example commands
MinIO → AWS S3
$ godwit sync \
--source s3://minio-bucket \
--source-endpoint https://minio.internal:9000 \
--destination s3://prod-bucket \
--destination-region us-east-1 \
--plan-only
────────────────────────────────────────
PLAN CREATED
────────────────────────────────────────
✓ Run-ID: minio-to-s3-prod
✓ Objects to transfer: 2,184,903
✓ Data to transfer: 38.2 TB
────────────────────────────────────────Generate a plan first. Inspect objects, sizes, and versions before a single byte moves.
MinIO → RustFS (post-MinIO replacement)
$ godwit sync \
--source s3://old-minio \
--source-endpoint https://minio.internal:9000 \
--destination s3://rustfs-bucket \
--destination-endpoint https://rustfs.internal:9000 \
--version-mode allPreserves full version history. Required for environments with compliance retention.
MinIO → MinIO (incremental sync / DR)
$ godwit sync \
--source s3://primary-minio \
--destination s3://dr-minio \
--resume --run-id nightly-dr-syncReusable run IDs make this a cron job, not a migration.
MinIO migration FAQ
Does Godwit Sync preserve MinIO version history during migration?
Yes. Full version history migrates with per-version checksums. Use --version-mode all to carry every version, or --version-mode latest for the current version only. Each version is verified end-to-end with MD5.
What about MinIO Object Lock, retention modes, and legal holds?
Preserved per version. Both GOVERNANCE and COMPLIANCE retention modes are replicated, along with retain-until dates and legal-hold flags. Compliance state at the destination matches the source after cutover.
My MinIO data is erasure-coded. Does that affect migration?
No. Godwit Sync operates at the S3 API layer. Storage-layer details like erasure coding, parity, and disk layout are invisible to any S3-compatible migration tool, including this one.
How much downtime does a MinIO migration require?
Only a short final cutover window. Run a full sync against the live cluster, then a final incremental sync while writes are paused. Chunk-level resume and reusable run IDs keep the cutover predictable.
Does Godwit Sync handle multi-TB or multi-hundred-TB MinIO clusters?
Yes — that's the default design point. Chunk-level resume, deterministic plans, and back-pressure controls (--read-bps, --rps, --max-inflight) keep the source MinIO cluster healthy throughout. No local staging required.
What about MinIO bucket policies, IAM, and access keys?
Godwit Sync transfers object data, versions, and object-level metadata. Bucket policies and IAM/access keys must be recreated on the destination — this is true of every S3-compatible migration tool, not a limitation specific to Godwit.
How much does a MinIO migration cost with Godwit Sync?
The free plan covers 10 GB per run, forever. A 50 GB 30-day trial unlocks after registration. Paid plans start at €15/month with capacity tiers up to 10 TB per run. No per-object or per-GB transfer fees from Godwit.
Start with a plan, not a panic migration.
50 GB migration capacity for 30 days after registration. 10 GB per-run permanent tier after that.