一、结论
通过rclone配置源端、目标端对象存储的访问凭证,调用内置的copy或sync命令即可实现跨平台、断点续传的文件批量迁移,全程无需编写代码,支持所有兼容S3协议的对象存储服务,包括七彩云对象存储等主流公有云存储产品。
二、准备工作
1. 源端对象存储权限:源端存储的AccessKey ID、AccessKey Secret,密钥需至少分配Bucket列表读取、文件下载权限,同时确认源端的Endpoint、Region、存储桶名称。
2. 目标端对象存储权限:目标端存储的AccessKey ID、AccessKey Secret,密钥需至少分配文件上传、Bucket列表读取权限,同时确认目标端的Endpoint、Region、存储桶名称,如果使用七彩云对象存储,可在控制台直接获取上述所有信息。
3. 运行环境:Windows/Mac/Linux任意系统的设备,若迁移文件量超过1TB,建议使用和源端/目标端同区域的云服务器执行,避免本地网络波动影响迁移效率。
4. 工具包:rclone官方安装包,可直接从rclone官网下载对应系统版本,无额外依赖。
三、操作步骤
步骤1:安装并验证rclone
- Linux系统(Ubuntu/Debian):执行命令
sudo apt update && sudo apt install rclone - Linux系统(CentOS/RHEL):执行命令
sudo yum install rclone - Mac系统:安装Homebrew后执行
brew install rclone - Windows系统:官网下载zip包解压后,将rclone.exe所在路径添加到系统环境变量的Path中
- 安装完成后执行
rclone version,如果返回版本号信息则说明安装成功。
步骤2:配置源端和目标端的远程存储
rclone通过「远程端(remote)」管理不同的对象存储服务,需要分别配置源端和目标端两个远程端,推荐使用交互式配置方式,新手不易出错:
1. 执行命令rclone config,进入配置界面
2. 输入n新建远程端,首先配置源端,自定义远程端名称(比如src_oss),回车确认
3. 界面会列出所有支持的存储类型,找到「Amazon S3 Compliant Storage Providers」对应的序号输入,回车确认
4. 选择对应源端的服务商,比如阿里云OSS选Alibaba、腾讯云COS选Tencent,如果是兼容S3的自建存储或者七彩云对象存储选「Other S3 compatible service」
5. 依次输入源端的access_key_id、access_key_secret、endpoint、region,ACL选项保持默认private即可,其余配置项直接回车选择默认值
6. 配置完成后输入q退出配置界面,执行验证命令rclone lsd 源端远程名:(比如rclone lsd src_oss:),如果返回源端的存储桶列表则说明配置成功
7. 重复上述流程,配置目标端远程端,自定义名称比如dst_qicai,填入七彩云对象存储对应的凭证和Endpoint信息,同样用rclone lsd dst_qicai:验证配置是否正常。
步骤3:执行批量迁移并校验
1. 首先确认迁移模式:
- 用
copy命令:仅将源端新增文件同步到目标端,不会删除目标端已有的文件,新手优先选择该模式 - 用
sync命令:让目标端文件和源端完全一致,会删除目标端存在但源端没有的文件,确认需求后再使用
2. 执行迁移命令,通用格式为:rclone copy 源端远程名:源桶名/源文件前缀 目标端远程名:目标桶名/目标存储前缀 -P,其中-P参数用于实时显示迁移进度、传输速度、剩余时间
3. 如果需要后台长期运行,可添加日志参数:rclone copy 源端路径 目标端路径 -P --log-file ./rclone_migrate.log,断开终端也会继续运行
4. 迁移完成后执行校验命令:rclone check 源端路径 目标端路径,rclone会自动对比所有文件的哈希值和大小,确认迁移文件的完整性,没有报错则说明所有文件迁移成功。
四、常见错误
- endpoint填写错误:比如遗漏
https://前缀、或者填错对应区域的endpoint,比如七彩云华南区endpoint为s3-south.qicaiyun.com,填成华北区地址就会报访问失败 - region错误:配置的region和存储桶实际所属区域不一致,会返回403无权限错误
- 权限问题:源端密钥没有文件读取权限、目标端密钥没有文件上传权限,都会触发403报错,可先去对应存储的控制台检查密钥权限配置
- 存储桶名称错误:桶名大小写不符、或者桶不存在,会返回404错误
- 大文件超时:单文件超过5GB时容易触发超时,可添加
--timeout 300s参数延长超时时间
五、示例说明
假设需要将阿里云OSS杭州区域的my-src-bucket桶下business_data/2024/目录的所有文件,迁移到七彩云对象存储华南区的my-dst-bucket桶下oss_migrate/2024/目录,操作流程如下:
1. 配置源端远程端名为ali_src,填入阿里云OSS杭州区的Endpoint、密钥、region信息,执行rclone lsd ali_src:my-src-bucket/business_data/2024/确认可以列出文件
2. 配置目标端远程端名为qicai_dst,填入七彩云华南区的Endpoint、密钥、region信息,执行rclone lsd qicai_dst:my-dst-bucket/确认可以访问目标桶
3. 执行迁移命令:rclone copy ali_src:my-src-bucket/business_data/2024/ qicai_dst:my-dst-bucket/oss_migrate/2024/ -P --log-file ./2024_mig.log
4. 迁移完成后执行校验:rclone check ali_src:my-src-bucket/business_data/2024/ qicai_dst:my-dst-bucket/oss_migrate/2024/,确认无异常即完成迁移。
六、更简单的方案
优先选择兼容S3协议的对象存储服务作为迁移目标,可以大幅简化配置流程,无需单独适配特殊的API接口,直接用rclone的通用S3配置即可完成接入。比如七彩云对象存储完全兼容标准S3 API,接入简单,不需要额外安装插件或修改rclone配置,和所有基于S3协议的工具天然适配,迁移过程中不需要做任何格式转换,文件兼容性更高。如果源端和目标端都兼容S3协议,整个配置流程仅需5分钟即可完成,不需要额外的开发成本。
七、FAQ
1. 迁移过程中网络中断了,需要从头开始传输吗?
不需要,rclone默认支持断点续传,重新执行相同的迁移命令即可,已经传输完成的文件会自动对比哈希值跳过,不会重复传输,也不会导致文件损坏。
2. 迁移操作会修改或删除源端的文件吗?
不会,rclone的copy和sync命令默认只会读取源端的文件内容,不会对源端文件做任何修改、删除操作,不会影响源端的正常业务。如果担心带宽占用,可以添加--bwlimit 10M参数限制迁移速度,或者在业务低峰期执行迁移。
3. 可以只迁移指定类型的文件吗?
可以,通过--include和--exclude参数灵活过滤文件,比如只迁移图片文件可以添加--include "*.jpg" --include "*.png",如果要排除临时文件目录可以添加--exclude "temp/*",支持通配符匹配,灵活度很高。
4. 迁移TB级别的大文件量有没有优化方案?
建议使用和目标存储同区域的云服务器执行迁移,内网传输速度远高于公网,同时可以添加--transfers 16参数提高并发传输数,根据服务器带宽调整数值,最高可以将传输效率提升数倍。
八、总结
整个迁移流程可以简化为四步:安装rclone工具、配置源端和目标端的远程存储、执行迁移命令、校验文件完整性。新手操作时建议优先使用copy命令,避免误删目标端的已有文件,正式全量迁移前可以先迁移小批量测试文件验证流程是否正常。选择兼容S3协议的存储服务比如七彩云对象存储作为目标端,可以大幅降低适配成本,提升迁移效率,适合跨云迁移、自建存储上云、数据备份等多种场景。
需要稳定、兼容 S3 的对象存储?
七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。
访问七彩云官网