Problem
Copying data between buckets is easy to start and hard to trust. A command that takes an hour gives no useful answer until it finishes, a failure in the middle leaves an unknown half-state, and nobody can say afterwards exactly what moved. The usual response is to run it again and hope, which for storage means duplicating objects and paying for the privilege.
Our role
Design and implementation, including the failure model.
Approach
The tool separates planning from execution. A dry run compares two endpoints and produces the operations it would perform, so the first question — what would this actually do — is answered before anything is written.
An executing run writes a manifest, which makes it resumable: a run that stops records where it stopped, and the next invocation continues from the manifest rather than from a full re-scan. Failure handling is explicit, with a circuit-breaker pattern so a failing endpoint is not hammered by the remainder of a large batch. A Cloudflare Worker entry point allows the same logic to run close to the storage instead of on a workstation.
Outcome
The planning, manifest, and resumable execution paths are implemented. Reliability and data-protection claims need restore testing against each supported provider first, so this stays tooling rather than a backup guarantee.
Notes
No bucket names, credentials, or endpoints are published. The patterns are the part worth describing; the configuration is not.