Skip to content

迁移-Rclone迁移腾讯云COS到AWS S3

难度等级: 初级
预计时间: 30-60分钟(不含数据传输时间)
适用场景: 跨云存储迁移

将腾讯云COS(对象存储)中的数据完整迁移至AWS S3,保持文件结构和属性不变。

环境信息:

  • 源:腾讯云COS(新加坡)- 3mg89ydsgz63ccie-1394117817
  • 目标:AWS S3(新加坡)- ab2nl2an1lwp6r3d-rclone
  • 数据量:约50GB(混合大小文件)

必须准备:

  • 腾讯云访问凭证(SecretId和SecretKey)- 获取方式
  • AWS访问凭证(Access Key和Secret Key)- 创建方式
  • 具有足够权限的IAM用户(腾讯云和AWS各一个)
  • 一台执行迁移的机器(本地电脑或云服务器)

权限要求:

  • 腾讯云:COS读取权限(cos:GetObject, cos:ListBucket)
  • AWS:S3写入权限(s3:PutObject, s3:ListBucket)

Rclone是命令行工具,类比为”云存储之间的搬家工具”。

Linux/macOS:

curl https://rclone.org/install.sh | sudo bash

Windows: 访问Rclone官网下载安装包。

验证安装:

rclone version

运行配置向导:

rclone config

按提示操作:

  1. 输入 n(新建配置)
  2. 名称输入:tencentcos
  3. 存储类型选择:输入 4(S3)
  4. Provider选择:输入 TencentCOS
  5. 选择输入密钥:输入1(输入AK/SK)
  6. 输入腾讯云SecretId
  7. 输入腾讯云SecretKey
  8. Endpoint输入:8(cos.ap-singapore.myqcloud.com)
  9. ACL:回车保持空(默认)
  10. 存储类型:标准存储2
  11. 是否编辑高级配置:(直接回车)
  12. 是否保存此配置:y(直接回车)

[配置腾讯云COS截图]

配置要点

  • Endpoint必须与桶所在区域匹配
  • 使用子账号时确保已授予COS读取权限

继续在配置向导中:

  1. 输入 n(再次新建配置)
  2. 名称输入:awss3
  3. 存储类型选择:输入 4(或输入s3)
  4. Provider选择:输入 1(aws)
  5. 获取密钥方式:1(输入密钥)
  6. 输入AWS Access Key ID
  7. 输入AWS Secret Access Key
  8. Region输入:12(或ap-southeast-1(新加坡))
  9. Endpoint:保持空回车
  10. location_constraint:12(Asia Pacific (Singapore) Region)
  11. ACL:保持为空,回车
  12. 加密算法:根据需要选择,本次演示没有加密
  13. KMS:根据需要选择,本次演示没有使用KMS
  14. 存储类型:保持默认,或者选择标准存储
  15. 两次回车结束
  16. q退出配置

[配置AWS S3截图]

验证配置:

rclone listremotes

应显示 tencentcos:awss3:


分别测试两端连接:

rclone lsd tencentcos:3mg89ydsgz63ccie-1394117817
rclone lsd awss3:ab2nl2an1lwp6r3d-rclone

如成功列出内容则配置正确。


推荐命令

rclone sync tencentcos:3mg89ydsgz63ccie-1394117817 awss3:ab2nl2an1lwp6r3d-rclone \
--progress \
--transfers=16 \
--checkers=32 \
--s3-upload-concurrency=8 \
--s3-chunk-size=16M \
--log-file=migration.log \
--dry-run

[执行迁移截图]

参数说明

  • --progress:显示实时进度
  • --transfers=16:并发传输16个文件(最佳平衡值)
  • --checkers=32:并发检查32个文件
  • --s3-upload-concurrency=8:单个大文件分8个分块上传
  • --s3-chunk-size=16M:每个分块16MB(适合混合文件场景)
  • --log-file:记录日志便于排查问题
  • --dry-run:模拟运行不实际传输,验证无误后去掉此参数

参数取值表

可用内存transferscheckersbuffer-sizes3-upload-concurrency预计占用
1GB248M2~350MB
2GB4816MB4~850MB
4GB81616MB4~1.5GB
8GB163216MB8~3GB
16GB+326432MB8~5.5GB

为何这是最佳实践

  • 并发参数针对50GB混合文件优化,小文件走transfers快速传输,大文件走分块上传避免超时
  • 新加坡到新加坡同区域迁移,网络稳定性高,可适度提高并发
  • 保留日志便于后续验证和问题追溯

正式迁移时去掉 --dry-run

rclone sync tencentcos:3mg89ydsgz63ccie-1394117817 awss3:ab2nl2an1lwp6r3d-rclone \
--progress \
--transfers=16 \
--checkers=32 \
--s3-upload-concurrency=8 \
--s3-chunk-size=16M \
--log-file=migration.log

迁移截图


检查文件数量和大小:

rclone size tencentcos:3mg89ydsgz63ccie-1394117817
rclone size awss3:ab2nl2an1lwp6r3d-rclone

对比两端MD5(可选):

rclone check tencentcos:3mg89ydsgz63ccie-1394117817 awss3:ab2nl2an1lwp6r3d-rclone --one-way
2026/01/15 09:53:25 NOTICE: S3 bucket ab2nl2an1lwp6r3d-rclone: 0 differences found
2026/01/15 09:53:25 NOTICE: S3 bucket ab2nl2an1lwp6r3d-rclone: 68 hashes could not be checked
2026/01/15 09:53:25 NOTICE: S3 bucket ab2nl2an1lwp6r3d-rclone: 6281 matching files

第二条提示有68个无法校验哈希值,属于正常现象,这是因为腾讯云和AWS使用了不同的哈希算法。根据0 differences found显示,所有文件已经正确传输。


删除临时凭证

# 删除Rclone配置(如不再需要)
rclone config delete tencentcos
rclone config delete awss3
# 或编辑配置文件移除敏感信息
rclone config file # 查看配置文件位置

优势

  • 免费开源,无需额外费用
  • 支持断点续传,中断后可继续
  • 跨云平台通用性强
  • 命令简单,配置灵活

劣势

  • 需要有一台中转机器(产生出站流量费用)
  • 大规模迁移(TB级)速度受限于机器带宽
  • 无可视化界面

成本考量

  • 腾讯云COS出站流量费用(新加坡约$0.12/GB)
  • AWS S3入站流量免费
  • 50GB预计产生约$6流量费

  1. 带宽限制:执行机器上行带宽决定迁移速度,建议使用云服务器执行
  2. 权限最小化:迁移完成后立即删除或禁用临时访问密钥
  3. 存储类别:默认迁移至S3标准存储,如需其他类别(如低频访问)需额外指定参数
  4. 元数据保留:Rclone默认保留修改时间,但不保留自定义元数据标签
  5. 并发调优:如遇到限流错误,降低 --transfers 值至8或4
  6. 区域选择:同区域迁移最快且成本最低,已采用最佳实践

Q: 迁移过程中断怎么办?
A: 重新运行相同命令,Rclone会自动跳过已传输文件继续未完成部分。

Q: 如何迁移特定文件夹?
A: 在源路径后添加文件夹名,如 tencentcos:桶名/folder1

Q: 出现403错误?
A: 检查访问密钥权限,确保包含读取(源)和写入(目标)权限。

Q: 传输速度很慢?
A: 检查执行机器带宽,考虑使用云服务器或降低并发参数。

Q: 需要保留桶策略和ACL吗?
A: Rclone仅迁移文件内容,桶级别的策略、生命周期规则、版本控制需在AWS控制台手动重新配置。



graph LR
    A[腾讯云COS<br/>新加坡] -->|Rclone传输<br/>带宽受限于执行机器| B[执行机器<br/>本地或云服务器]
    B -->|并发上传<br/>transfers=16| C[AWS S3<br/>新加坡]
    
    style A fill:#f9f,stroke:#333
    style C fill:#9cf,stroke:#333
    style B fill:#ffa,stroke:#333

架构要点

  • 执行机器位置建议选择与源或目标同区域的云服务器,可显著降低流量成本并提升速度
  • 使用IAM角色代替密钥更安全(如在AWS EC2上执行)
  • 生产环境建议先迁移部分数据验证后再全量迁移