You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何跨不同凭证的S3兼容桶实现数据同步?

如何跨不同凭证的S3兼容桶实现数据同步?

嘿,我之前也碰到过一模一样的需求——不想绕本地下载再上传的弯路,直接在两个S3兼容桶之间同步。给你几个亲测好用的高效方法:

方法1:用rclone(最灵活通用)

rclone对各种云存储的支持超级全面,S3兼容的存储自然不在话下,步骤也很简单:

  • 先执行 rclone config 进入配置向导,分别添加两个「远程存储」:一个对应你的MinIO桶(要填对MinIO的endpoint地址、access key和secret key),另一个对应AWS S3(填AWS的凭证和对应区域就行)。
  • 配置完直接跑同步命令:
    rclone sync minio-remote:/你的MinIO桶名 aws-remote:/你的AWS-S3桶名
    
    这个命令是增量同步,只会传输有变化的文件,还支持断点续传,比全量下载上传省太多时间和带宽。

方法2:用MinIO官方的mc工具(专为S3兼容场景设计)

如果你已经在用MinIO,那mc肯定顺手,它原生支持管理多个S3兼容存储:

  • 先给两个存储设置别名:
    # 添加MinIO的别名
    mc alias set minio http://你的MinIO端点地址 MinIO的AccessKey MinIO的SecretKey
    # 添加AWS S3的别名
    mc alias set aws s3.amazonaws.com AWS的AccessKey AWS的SecretKey
    
  • 然后用mirror命令做同步:
    mc mirror --overwrite --remove minio/你的MinIO桶名 aws/你的AWS-S3桶名
    
    其中--overwrite会覆盖目标桶里已存在的旧文件,--remove会删除目标桶里源桶没有的文件,根据你的需求加参数就行,默认是只新增/更新文件。

方法3:用AWS CLI配合多配置(不用装新工具)

如果不想额外装工具,也可以用AWS CLI结合多配置文件搞定:

  • 先编辑~/.aws/credentials文件,添加两个配置段:
    [minio]
    aws_access_key_id = 你的MinIO AccessKey
    aws_secret_access_key = 你的MinIO SecretKey
    region = us-east-1  # MinIO对区域要求不高,随便填一个就行
    
    [aws]
    aws_access_key_id = 你的AWS AccessKey
    aws_secret_access_key = 你的AWS SecretKey
    region = 你的AWS桶所在区域(比如us-west-2)
    
  • 然后用环境变量临时指定源的MinIO配置,再用AWS CLI同步到目标桶:
    # 临时设置MinIO的凭证和端点
    export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id --profile minio)
    export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key --profile minio)
    export AWS_ENDPOINT_URL=http://你的MinIO端点地址
    
    # 同步到AWS S3桶,指定AWS的配置文件
    aws s3 sync s3://你的MinIO桶名 s3://你的AWS-S3桶名 --profile aws
    
    这个方法虽然能行,但配置起来比前两个麻烦点,适合不想装新工具的场景。

这些方法都是直接在两个桶之间做传输,完全不用过本地磁盘,效率比你说的下载再上传高太多啦!

备注:内容来源于stack exchange,提问作者MorayM

火山引擎 最新活动