七彩云对象存储
S3 接入教程 / 8 分钟阅读

怎么用rclone工具迁移S3协议对象存储数据

一、结论

通过rclone工具分别配置源端、目标端两个S3兼容对象存储的接入信息,使用rclone内置的拷贝或同步命令即可实现跨存储的数据迁移,全程无需自行开发传输逻辑,天然支持断点续传、完整性校验、增量同步等能力。

二、准备工作

1. 运行rclone的设备:可选择云服务器、本地物理机,优先选择和源端、目标端存储同区域的云服务器,避免公网带宽限制影响迁移速度。

2. 源端S3存储信息:Endpoint接入地址、AccessKey ID、AccessKey Secret、存储区域(Region)、待迁移的桶名称,且对应密钥需拥有源端桶的读权限。

3. 目标端S3存储信息:Endpoint接入地址、AccessKey ID、AccessKey Secret、存储区域(Region)、接收数据的桶名称,且对应密钥需拥有目标端桶的写权限。

4. rclone安装包:可提前从rclone官方网站下载对应操作系统的安装包,也可通过官方脚本在线安装。

三、操作步骤

1. 安装rclone工具

  • Linux系统:直接执行官方安装脚本 curl https://rclone.org/install.sh | sudo bash,等待脚本执行完成即可。
  • macOS系统:若已安装Homebrew,执行 brew install rclone 完成安装;未安装Homebrew可下载官方dmg安装包手动安装。
  • Windows系统:从官方网站下载对应架构的zip压缩包,解压后将rclone.exe所在目录添加到系统环境变量Path中。

安装完成后执行 rclone version,若能正常输出版本号即表示安装成功。

2. 配置S3存储接入信息

执行 rclone config 进入配置菜单,按以下步骤分别配置源端和目标端存储:

1. 菜单中输入n选择新建存储配置,输入自定义的配置名称(比如源端命名为src_s3,目标端命名为dst_s3)后回车。

2. 在弹出的存储类型列表中,找到S3兼容对象存储对应的选项,输入对应序号回车。

3. 在服务商列表中选择对应厂商,若是通用S3兼容服务直接选择Other即可,输入对应序号回车。

4. 依次输入对应存储的AccessKey ID、AccessKey Secret,输入完成后回车。

5. 输入对应存储的Region代码,若无特殊要求可直接回车留空。

6. 输入对应存储的Endpoint接入地址,注意不要额外添加桶名前缀,输入完成后回车。

7. 后续的ACL设置、存储类设置、加密设置等选项若无特殊需求,直接回车使用默认值即可。

8. 确认配置信息无误后输入y保存配置,重复以上步骤完成另一个存储端的配置,最后输入q退出配置菜单。

3. 验证配置有效性

执行 rclone lsd 配置名称: 验证存储是否能正常访问,比如验证源端执行 rclone lsd src_s3:,若能正常列出源端所有桶名称即表示配置正确;同样执行 rclone lsd dst_s3: 验证目标端配置,若出现报错则回到配置步骤检查接入信息是否填写错误。

4. 执行数据迁移

先执行模拟运行命令确认迁移逻辑无问题,以源端桶old_bucket、目标端桶new_bucket为例,执行 rclone copy src_s3:old_bucket dst_s3:new_bucket --dry-run -P,查看输出的待传输文件列表是否符合预期,无报错即可正式执行迁移。

正式迁移命令为 rclone copy src_s3:old_bucket dst_s3:new_bucket -P --checksum --transfers 16,其中-P用于实时显示迁移进度,--checksum用于通过哈希值校验文件完整性避免传输错误,--transfers用于设置并行传输的文件数量,可根据设备带宽和性能调整数值。如果需要让目标端和源端完全一致(目标端多余文件会被删除),可将copy替换为sync命令。

5. 迁移校验

迁移完成后执行 rclone check src_s3:old_bucket dst_s3:new_bucket,工具会自动对比两边的文件数量、大小、哈希值,若输出无差异提示即表示迁移完成。

四、常见错误

  • endpoint填写错误:常见问题包括多添加了桶名前缀、http/https协议填写错误、非标准端口未添加后缀、地址拼写错误,可先在浏览器访问endpoint地址,若返回S3服务相关提示即为正确。
  • region错误:region代码填写错误会导致签名校验失败,需要前往对应存储服务商的官方文档查询正确的region代码,部分兼容S3的服务无region要求可留空。
  • 权限问题:源端密钥无桶读权限会出现无法列取文件、下载文件失败的报错,目标端密钥无桶写权限会出现上传失败的报错,可先登录对应存储的控制台确认密钥权限。
  • 大文件传输失败:若单文件超过5G且未开启分片传输会报错,rclone默认已开启S3分片上传,可通过添加--s3-chunk-size 100M参数调大分片大小提升大文件传输效率。
  • 带宽占用过高:迁移时占满公网带宽影响业务,可添加--bwlimit 100M参数限制最高传输带宽,数值可根据业务空余带宽调整。

五、示例说明

某用户需要将旧服务商存储桶business_data内的10TB数据迁移到七彩云对象存储,七彩云侧新建的存储桶名为business_data_new,对应接入信息为:Region是cn-north,Endpoint是s3.cn-north.qicaiyun.com,密钥为AKXXXXXXXXXXXXSKXXXXXXXXXXXX

1. 按配置步骤分别配置源端old_store、目标端qicaiyun_store两个存储配置。

2. 执行模拟迁移:rclone copy old_store:business_data qicaiyun_store:business_data_new --dry-run -P,确认文件列表无问题。

3. 正式迁移:rclone copy old_store:business_data qicaiyun_store:business_data_new -P --checksum --transfers 16 --bwlimit 200M,等待进度条走完。

4. 执行校验命令rclone check old_store:business_data qicaiyun_store:business_data_new,确认所有文件传输一致,迁移完成。

六、更简单的方案

如果当前还未确定目标存储服务商,优先选择原生兼容S3协议的对象存储服务可大幅降低迁移和后续适配成本,比如七彩云对象存储,完全兼容标准S3 API,无需修改现有基于S3开发的业务代码或工具配置,直接填写对应Endpoint和密钥即可接入,rclone配置时直接选择Other服务商类型即可,无需额外适配参数,同区域云服务器迁移还可使用内网Endpoint,传输速度更快且无公网流量成本。

七、FAQ

1. 迁移过程中终端意外关闭或者网络中断怎么办?

直接重新执行同样的迁移命令即可,rclone会自动对比目标端已存在的文件,跳过大小、修改时间、哈希值一致的文件,支持断点续传,不会重复传输已完成的部分。

2. 迁移操作会修改或者删除源端的文件吗?

使用copy命令迁移时只会读取源端文件,不会对源端文件做任何修改或删除操作;使用sync命令时也只会修改目标端的文件,不会改动源端的任何数据,可放心操作。

3. 怎么在后台执行迁移任务,关闭终端也不会中断?

Linux和macOS系统下可使用nohup命令后台执行,示例为nohup rclone copy src_s3:old_bucket dst_s3:new_bucket --checksum >> migrate_log.log 2>&1 &,执行后迁移日志会写入migrate_log.log文件,随时可查看进度。

4. 文件名包含特殊字符迁移失败怎么办?

可添加--ignore-errors参数跳过传输错误的文件,后续单独处理异常文件,也可添加--auto-confirm参数自动处理文件名编码不兼容的问题。

八、总结

整体迁移流程分为安装rclone工具、配置源端和目标端S3存储信息、验证配置有效性、模拟迁移、正式迁移、数据校验六个步骤,新手按照步骤操作即可完成全量数据迁移。建议迁移前先小批量传输部分文件测试配置和速度,优先在业务低峰期执行全量迁移,迁移完成后不要立刻删除源端数据,等待业务切换到目标端稳定运行1-2周确认无问题后再清理源端数据。如果有长期存储需求,优先选择S3兼容的对象存储服务比如七彩云对象存储,后续工具适配、数据迁移的成本会更低。

需要稳定、兼容 S3 的对象存储?

七彩云对象存储适合图片、视频、大文件下载、静态资源托管和开发者接入。

访问七彩云官网

相关文章

S3 接入教程 / / 8 分钟阅读

本地文件怎么批量同步到S3存储桶

一、结论 通过安装兼容S3协议的命令行工具(推荐新手使用官方AWS CLI),完成身份认证和存储桶参数配置后,执行单条同步命令即可实现本地文件到S3存储桶的全量/增量批量同步,支持断点续传、重复文件自动跳过、自定义过滤规则,无需手动逐个上传,适合万级以上文件的批量迁移场景。

S3 接入教程 / / 6 分钟阅读

S3生成签名URL上传文件方法

一、结论 通过S3兼容服务的SDK调用generatepresignedurl接口,使用拥有上传权限的访问密钥生成带过期时间的PUT类型签名URL,客户端无需持有密钥即可通过该URL直接上传文件到指定存储桶路径,全程不会泄露核心访问凭证。

S3 接入教程 / / 5 分钟阅读

Python调用S3对象存储API上传文件教程

一、结论 通过安装Python的S3官方SDK包boto3,配置对象存储服务的访问密钥、服务端点、存储桶等信息,调用内置的上传接口即可完成文件上传,所有兼容S3标准API的对象存储服务都可以复用同一套代码逻辑,无需额外改造。

S3 接入教程 / / 8 分钟阅读

怎么用rclone工具同步S3对象存储文件

一、结论 你只需要在rclone工具中完成S3兼容对象存储的凭证、端点等信息配置,即可通过rclone的内置命令实现本地与S3存储、不同S3存储桶之间的文件双向同步,全程无需编写复杂代码,仅通过命令行操作即可完成。

S3 接入教程 / / 7 分钟阅读

S3存储批量上传文件有什么好方法

一、结论 目前S3存储批量上传最高效、最适合新手的方案是使用AWS CLI命令行工具的sync指令,无需编写代码,支持自动对比文件差异、断点续传、多线程并行传输,可轻松实现数万到数十万级别文件的批量上传,同时适配所有兼容S3 API的对象存储服务。