s3fs能否同时挂载不同账户的多个存储桶实现跨账户数据迁移
s3fs跨账户挂载存储桶及数据迁移方案
一、s3fs跨账户多桶挂载可行性及操作步骤
s3fs完全支持同时挂载不同账户下的多个存储桶,只需挂载时分别指定对应账户的密钥文件即可实现,你可以直接通过本地挂载点完成跨账户数据复制,具体操作步骤如下:
- 前置准备:提前获取A、B两个账户的Access Key、Secret Key,确保两个密钥对分别拥有对应存储桶的读写权限。
- 第一步:分别创建两个独立的密钥文件,避免账户信息冲突
在家目录下创建.passwd-s3fs-accA,写入A账户的密钥信息,格式为:
同路径下创建ACCESS_KEY_A:SECRET_KEY_A.passwd-s3fs-accB,写入B账户的密钥信息,格式为:
执行命令设置密钥文件权限(s3fs强制要求密钥文件权限为600,否则会挂载失败):ACCESS_KEY_B:SECRET_KEY_Bchmod 600 ~/.passwd-s3fs-acc* - 第二步:创建两个独立的挂载目录
mkdir -p /mnt/s3-accA /mnt/s3-accB - 第三步:分别挂载两个账户的存储桶
挂载A账户存储桶(将占位的<区域>替换为你的存储桶对应区域,非AWS的S3兼容存储替换为对应服务的endpoint地址即可):s3fs a-account-bucket-name /mnt/s3-accA -o passwd_file=~/.passwd-s3fs-accA -o url=https://s3.<region>.amazonaws.com -o allow_other
挂载B账户存储桶:s3fs b-account-bucket-name /mnt/s3-accB -o passwd_file=~/.passwd-s3fs-accB -o url=https://s3.<region>.amazonaws.com -o allow_other - 第四步:验证挂载并迁移数据
执行df -h确认两个s3fs挂载点都正常显示后,直接用cp、rsync等工具完成文件夹迁移即可,示例命令:rsync -av /mnt/s3-accA/待迁移的源文件夹/ /mnt/s3-accB/目标存储路径/
注意:s3fs是基于FUSE的用户态文件系统,数据读写都要经过本地网络中转,仅适合小数据量的迁移场景,大文件或数十万级以上的小文件迁移效率较低,且容易出现中断。
二、更高效的跨账户S3数据迁移方案
针对大数据量的迁移需求,推荐使用不需要本地挂载的原生工具,效率比s3fs高3~10倍:
方案1:AWS CLI 原生同步(推荐)
- 提前通过桶策略给其中一个账户的密钥配置另一个账户存储桶的对应读写权限
- 直接执行sync命令,数据走S3内部链路传输,不需要经过本地中转,支持断点续传、重复文件自动跳过:
aws s3 sync s3://a-account-bucket/源文件夹路径 s3://b-account-bucket/目标文件夹路径 --source-region <A桶区域> --region <B桶区域>
方案2:rclone 多端同步工具
- 在rclone配置文件中分别添加A、B两个账户的S3配置节点,分别命名为s3-accA、s3-accB
- 直接执行跨节点复制命令,支持多线程传输、断点续传,适配所有S3兼容的对象存储服务:
rclone copy s3-accA:a-account-bucket/源文件夹路径 s3-accB:b-account-bucket/目标文件夹路径 -P
内容的提问来源于stack exchange,提问作者黃丰嘉
相关产品推荐
相关产品推荐

