s3mirror s3mirror S3 bucket mirroring

copy | diff | parallel | guarded deletes

Mirror S3 buckets with clear transfer decisions.

s3mirror keeps bucket replication direct: one Python script, one YAML or JSON config, and logs that make scheduled S3-compatible copies easy to audit.

Release details

Latest stable release.

Loading... Version
--- Commit
--- Published
Published packages GHCR image / Homebrew tap / source archive
Release highlights
  • Loading release highlights...

What it does

Copy, compare, and clean up without surprises.

Discover Buckets and exclusions

List source buckets, skip configured names, and create missing destination buckets before copying.

Transfer Parallel object copies

Compare object keys and byte sizes, then copy new or changed objects with boto3 transfer settings.

Guard Explicit mirror deletes

Run copy-only validation first, then opt into destination-only object deletion when ready.

Install paths

Get started with your preferred runtime.

Recommended

Linux containers. Pulls the release image from GitHub Container Registry.

docker pull ghcr.io/netspeedy/s3mirror:latest
docker run --rm \
  -v "$PWD/config.yaml:/config/config.yaml:ro" \
  ghcr.io/netspeedy/s3mirror:latest \
  --config /config/config.yaml --no-delete

macOS and Linux. Tracks stable releases through the Netspeedy tap.

brew tap netspeedy/s3mirror
brew install s3mirror

Clone the repository and keep dependencies isolated for scheduled runs.

git clone https://github.com/netspeedy/s3mirror.git
cd s3mirror
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Fetch a tagged source archive directly from GitHub Releases.

curl -L https://github.com/netspeedy/s3mirror/archive/refs/tags/v1.0.3.tar.gz -o s3mirror-v1.0.3.tar.gz