Replicate objects across clouds as they arrive.
regadio watches a folder or listens for a webhook, then copies every new object to the S3-compatible storages you choose. One small binary instead of the sync server you would otherwise build and babysit.
go install regad.io/regadio@latest
From one bucket to every place it needs to be.
-
Something lands
A file is written to a watched folder, or your storage calls regadio's webhook when an object is created.
-
regadio streams it
The object moves in parts, straight from source to destination, without being staged on disk.
-
Every destination gets a copy
Each target has its own retries, so one slow provider never holds back the others.
One file describes the whole setup.
Name your storages once, then add a route for each trigger and the places its objects should go.
Secrets stay in environment variables.
regadio.yaml
storages:
homelab:
endpoint: http://minio.lan:9000
access_key: ${MINIO_KEY}
secret_key: ${MINIO_SECRET}
b2:
endpoint: https://s3.us-west-004.backblazeb2.com
access_key: ${B2_KEY_ID}
secret_key: ${B2_APP_KEY}
routes:
- name: backups
trigger: { type: folder, path: /data/backups }
targets:
- { storage: b2, bucket: offsite }
- name: uploads
trigger: { type: webhook, path: /hooks/uploads }
source: { storage: homelab, bucket: uploads }
targets:
- { storage: b2, bucket: mirror }
# add as many destinations as you need
Works with the storage you already use.
Cloud
- AWS S3
- Google Cloud Storage
- Azure Blob Storage
- Cloudflare R2
- Backblaze B2
- Wasabi
- Hetzner
- Scaleway
- Akamai
- DigitalOcean Spaces
Self-hosted
- MinIO
- SeaweedFS
- Garage
…and any S3-compatible endpoint.