Moving from MinIO or Garage¶
leBLOB has no import command: a bucket moves over S3, with rclone, one bucket at a time. tests/bench/run_migration.py in the repository runs this from MinIO and from Garage, and checks what arrives.
Copy a bucket¶
Set up an rclone remote for each store, both with provider = Other and force_path_style = true:
[old]
type = s3
provider = Other
endpoint = https://minio.example.org
access_key_id = ...
secret_access_key = ...
force_path_style = true
[leblob]
type = s3
provider = Other
endpoint = https://s3.example.org
access_key_id = ...
secret_access_key = ...
force_path_style = true
Create the bucket on leBLOB, then copy and compare:
rclone mkdir leblob:my-bucket
rclone sync --metadata old:my-bucket leblob:my-bucket
rclone check old:my-bucket leblob:my-bucket
rclone sync can run again to catch what changed in the meantime. Stop writes to the old store for the last run, then point clients at leBLOB.
What arrives¶
- The bytes of every object, multipart objects included.
- Keys as they were, including spaces,
+,&,=and non-ASCII characters. Content-Type,Cache-Controlandx-amz-meta-*, with--metadata.
rclone adds mtime and btime to the metadata. An object's time on leBLOB, as listings and lifecycle rules see it, is the time it was copied.
What has to be set again¶
These don't travel with the objects:
- Access keys. Create them with
leblob key create, and grant scoped keys their buckets. See Access keys. MinIO's users and policies have no equivalent beyond keys scoped per bucket. - Object tags.
- ACLs. Make buckets or objects public again with
public-read. See Public access. - Lifecycle rules and CORS rules. Put the same XML with
put-bucket-lifecycle-configurationandput-bucket-cors. leBLOB refuses a lifecycle rule with parts it doesn't understand, such as transitions. See Versioning, lifecycle rules and tags. - Versioning, and every version but the current one. Turn versioning on before copying if the bucket should keep versions from then on.
Before you switch¶
- Check that every client signs with SigV4. boto3 presigns with SigV2 unless told otherwise. See Using S3 clients.
- Look for features leBLOB answers with
501 NotImplemented: bucket policies, Object Lock, encryption managed by the server, and storage classes other thanSTANDARD. A client that used one on the old store gets an error from leBLOB, so it can't lose the feature without noticing. - Back up the metadata once the copy is done. See Backup and restore.