迁移-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)
1. 安装Rclone
Section titled “1. 安装Rclone”Rclone是命令行工具,类比为”云存储之间的搬家工具”。
Linux/macOS:
curl https://rclone.org/install.sh | sudo bashWindows: 访问Rclone官网下载安装包。
验证安装:
rclone version2. 配置源端(腾讯云COS)
Section titled “2. 配置源端(腾讯云COS)”运行配置向导:
rclone config按提示操作:
- 输入
n(新建配置) - 名称输入:
tencentcos - 存储类型选择:输入
4(S3) - Provider选择:输入
TencentCOS - 选择输入密钥:输入
1(输入AK/SK) - 输入腾讯云SecretId
- 输入腾讯云SecretKey
- Endpoint输入:
8(cos.ap-singapore.myqcloud.com) - ACL:
回车保持空(默认) - 存储类型:标准存储
2 - 是否编辑高级配置:
否(直接回车) - 是否保存此配置:
y(直接回车)
[配置腾讯云COS截图]
配置要点:
- Endpoint必须与桶所在区域匹配
- 使用子账号时确保已授予COS读取权限
3. 配置目标端(AWS S3)
Section titled “3. 配置目标端(AWS S3)”继续在配置向导中:
- 输入
n(再次新建配置) - 名称输入:
awss3 - 存储类型选择:输入
4(或输入s3) - Provider选择:输入
1(aws) - 获取密钥方式:
1(输入密钥) - 输入AWS Access Key ID
- 输入AWS Secret Access Key
- Region输入:
12(或ap-southeast-1(新加坡)) - Endpoint:保持空回车
- location_constraint:
12(Asia Pacific (Singapore) Region) - ACL:保持为空,回车
- 加密算法:根据需要选择,本次演示没有加密
- KMS:根据需要选择,本次演示没有使用KMS
- 存储类型:保持默认,或者选择标准存储
- 两次回车结束
- 按
q退出配置
[配置AWS S3截图]
验证配置:
rclone listremotes应显示 tencentcos: 和 awss3:。
4. 测试连接
Section titled “4. 测试连接”分别测试两端连接:
rclone lsd tencentcos:3mg89ydsgz63ccie-1394117817rclone lsd awss3:ab2nl2an1lwp6r3d-rclone如成功列出内容则配置正确。
5. 执行迁移(最佳实践)
Section titled “5. 执行迁移(最佳实践)”推荐命令:
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:模拟运行不实际传输,验证无误后去掉此参数
参数取值表
| 可用内存 | transfers | checkers | buffer-size | s3-upload-concurrency | 预计占用 |
|---|---|---|---|---|---|
| 1GB | 2 | 4 | 8M | 2 | ~350MB |
| 2GB | 4 | 8 | 16MB | 4 | ~850MB |
| 4GB | 8 | 16 | 16MB | 4 | ~1.5GB |
| 8GB | 16 | 32 | 16MB | 8 | ~3GB |
| 16GB+ | 32 | 64 | 32MB | 8 | ~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
6. 验证迁移结果
Section titled “6. 验证迁移结果”检查文件数量和大小:
rclone size tencentcos:3mg89ydsgz63ccie-1394117817rclone 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 found2026/01/15 09:53:25 NOTICE: S3 bucket ab2nl2an1lwp6r3d-rclone: 68 hashes could not be checked2026/01/15 09:53:25 NOTICE: S3 bucket ab2nl2an1lwp6r3d-rclone: 6281 matching files第二条提示有68个无法校验哈希值,属于正常现象,这是因为腾讯云和AWS使用了不同的哈希算法。根据0 differences found显示,所有文件已经正确传输。
7. 后续清理
Section titled “7. 后续清理”删除临时凭证
# 删除Rclone配置(如不再需要)rclone config delete tencentcosrclone config delete awss3
# 或编辑配置文件移除敏感信息rclone config file # 查看配置文件位置优势:
- 免费开源,无需额外费用
- 支持断点续传,中断后可继续
- 跨云平台通用性强
- 命令简单,配置灵活
劣势:
- 需要有一台中转机器(产生出站流量费用)
- 大规模迁移(TB级)速度受限于机器带宽
- 无可视化界面
成本考量:
- 腾讯云COS出站流量费用(新加坡约$0.12/GB)
- AWS S3入站流量免费
- 50GB预计产生约$6流量费
注意事项与限制
Section titled “注意事项与限制”- 带宽限制:执行机器上行带宽决定迁移速度,建议使用云服务器执行
- 权限最小化:迁移完成后立即删除或禁用临时访问密钥
- 存储类别:默认迁移至S3标准存储,如需其他类别(如低频访问)需额外指定参数
- 元数据保留:Rclone默认保留修改时间,但不保留自定义元数据标签
- 并发调优:如遇到限流错误,降低
--transfers值至8或4 - 区域选择:同区域迁移最快且成本最低,已采用最佳实践
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上执行)
- 生产环境建议先迁移部分数据验证后再全量迁移