Back

Blog details

Migrate from Amazon S3 to AIOZ Storage with rclone

AIOZ Network
5 min readJuly 29, 2026
aioz-storage
Migrate from Amazon S3 to AIOZ Storage with rclone
Dark terminal window with lines of command-line output

Moving a bucket from Amazon S3 to AIOZ Storage does not require rewriting your application code. AIOZ's own documentation covers exactly one migration path, rclone, and it works because both S3 and AIOZ Storage sit behind the same type = s3 remote in rclone's config format. This article walks through the actual config diff, the sync command, and the one gotcha AIOZ's docs call out by name.

TL;DR:

  • Add two remotes to your rclone config: one for S3 with provider = AWS, one for AIOZ Storage with provider = Other.
  • Run rclone sync to copy the bucket over, then rclone check to verify it landed intact.
  • If you hit a "corrupted on transfer: sizes differ" error, add --ignore-size.

Can You Migrate from Amazon S3 to AIOZ Storage?

Yes, and AIOZ's documentation treats it as a config change rather than a data-format change. Both remotes use rclone's s3 type, meaning rclone talks to AIOZ Storage the same way it talks to any S3-compatible target, just with different credentials and a different endpoint. There is no proprietary AIOZ migration tool involved, and no aws s3 sync path documented either; rclone is the one path AIOZ actually walks through.

What You Need Before You Start

Two things. First, rclone itself, installed and configured with your existing Amazon S3 credentials (rclone config file will tell you where its config lives, typically ~/.config/rclone/rclone.conf). Second, an AIOZ Storage access grant with S3 credentials: generate one from your AIOZ Storage account (choose the "S3 Credentials" type when creating it), and you get back an Access Key, Secret Key, and endpoint to use as the destination. AIOZ Storage's access grant system covers what that credential actually is under the hood, but for this migration you mainly need the three values it hands back.

Setting Up Your rclone Config: Source and Destination Remotes

Open your rclone config file and add (or confirm you already have) a source remote for S3:

[s3]
type = s3
provider = AWS
access_key_id = <your-s3-access-key-id>
secret_access_key = <your-s3-secret-access-key-id>
region = <your-s3-region>
endpoint = <your-s3-endpoint>

Then add a destination remote for AIOZ Storage:

[aioz-storage]
type = s3
provider = Other
access_key_id = <your-aioz-storage-access-key-id>
secret_access_key = <your-aioz-storage-secret-access-key>
endpoint = <your-aioz-storage-endpoint>
Shipping containers stacked at a busy port, symbolizing large-scale transfer

Look closely at what actually changes between the two blocks. type = s3 stays identical on both, which is the whole reason this migration doesn't need a different tool. provider flips from AWS to Other. AIOZ's remote drops the region field entirely, since it isn't a region-partitioned service the way S3 is. Everything else is just different credentials and a different endpoint value, which you fill in from the access grant you generated in the previous step. AIOZ's migration guide leaves the endpoint as a placeholder, but its own SDK documentation confirms the actual value: https://s3.aiozstorage.network.

Running and Verifying the Migration

With both remotes configured, the sync itself is one command:

rclone sync --progress s3:your-bucket aioz-storage:your-bucket

That copies everything from your S3 bucket into the matching AIOZ Storage bucket, printing progress as it goes. Once it finishes, don't just trust that it worked: run a check pass to confirm the data landed intact.

rclone check --progress s3:your-bucket aioz-storage:your-bucket

Only after that check comes back clean should you update your application's endpoint, region, and credentials to point at AIOZ Storage instead of S3, since your code is talking to an S3-compatible API either way and doesn't need any other change.

The One Documented Gotcha (and How to Work Around It)

AIOZ's migration guide names exactly one error to watch for: corrupted on transfer: sizes differ. When that happens, rerun the sync with --ignore-size appended:

rclone sync --progress s3:your-bucket aioz-storage:your-bucket --ignore-size

AIOZ's documentation doesn't explain why file sizes might be reported differently between the two sides, so treat --ignore-size as the documented fix rather than a diagnosis. What the guide does not cover at all: object ACLs, versioning, or lifecycle rules. If your S3 bucket leans on any of those, verify separately whether AIOZ Storage has an equivalent before you cut over, since the migration guide itself is silent on all three.

Frequently Asked Questions

Do I need to change my application code to migrate from S3 to AIOZ Storage?
No. Both are S3-compatible under rclone's s3 remote type, so the migration is a credentials and endpoint change, not a code or data-format change.

What rclone command migrates data from S3 to AIOZ Storage?
rclone sync --progress s3:your-bucket aioz-storage:your-bucket, using a source remote configured with provider = AWS and a destination remote configured with provider = Other.

What does the "corrupted on transfer: sizes differ" error mean during migration?
AIOZ's documentation doesn't explain the cause, only the fix: rerun the sync with the --ignore-size flag appended.

How do I verify my S3 to AIOZ Storage migration completed correctly?
Run rclone check --progress s3:your-bucket aioz-storage:your-bucket after the sync finishes, and don't cut your application over until that check passes clean.

What credentials do I need for the AIOZ Storage side of the migration?
An access grant generated with the "S3 Credentials" type, which returns an Access Key, Secret Key, and endpoint you plug into your rclone destination remote.

Does the migration guide cover S3 features like versioning or lifecycle rules?
No. AIOZ's migration documentation covers object data transfer only; it doesn't address ACLs, versioning, or lifecycle policies, so verify those separately if your bucket depends on them.

References

We only send updates when meaningful changes ship, and you can unsubscribe anytime

Related Content

blog thumbnail

Generating Presigned URLs on AIOZ Storage with Python

AIOZ storage presigned url python code needs one boto3 method, generate_presigned_url, plus the same endpoint config every other AIOZ Storage script uses.

aioz-storage
5 min readAugust 09, 2026
blog thumbnail

How AIOZ Storage Pricing Works: Storage and Delivery Costs

AIOZ Storage costs $17 per TB for storage and $5 per TB for delivery, billed hourly with no free tier. Here is exactly how billing and penalties work.

aioz-storage
5 min readAugust 08, 2026
blog thumbnail

How AIOZ Storage Uses AIOZ DePIN for Replication

AIOZ storage depin replication runs on the same network as AIOZ Stream. Here is exactly what AIOZ's docs confirm about redundancy, and what they don't.

aioz-storage
5 min readAugust 07, 2026
blog thumbnail

Migrate from Amazon S3 to AIOZ Storage with rclone

Migrating from Amazon S3 to AIOZ Storage is a config change, not a rewrite. Here is the exact rclone setup, sync command, and the one documented gotcha.

aioz-storage
5 min readAugust 06, 2026
blog thumbnail

AIOZ Storage vs Storj: Two DePIN Platforms Compared

AIOZ storage vs Storj is the closest architecture match in decentralized object storage. Both use macaroon access grants. Here is where they actually differ.

aioz-storage
5 min readAugust 05, 2026
blog thumbnail

AIOZ Storage vs the Alternatives: A Full Comparison

AIOZ storage vs alternatives means five real competitors, not one. Here is honest pricing and architecture for AWS, R2, B2, Wasabi, and Storj against AIOZ.

aioz-storage
5 min readAugust 04, 2026