阿里云 OSS 至 AWS S3 跨云迁移实施指南

阿里云 OSS 至 AWS S3 跨云迁移实施指南

一、 实战迁移绩效指标 (Benchmark)

在正式实施前,以下是基于该方案的实际测试数据,供参考预期效果:

指标项 数据表现
传输文件总数 1,438,287 个(约 143.8 万)
数据传输总量 186.94 GB
全量迁移总耗时 3 小时 20 分 03 秒
平均传输速率 18.13 MB/s (约 7,191 文件/分钟)

二、 基础环境配置 (Rclone 部署与鉴权)

1. 安装 Rclone 工具

适用于 Amazon Linux 2023 / RHEL / CentOS 环境:

bash 复制代码
sudo yum install -y unzip curl
curl https://rclone.org/install.sh | sudo bash

# 验证安装
rclone --version
2. 配置文件生成
  • 写入以下配置内容(替换你的 AK/SK、Bucket 名称及区域 Endpoint):

~/.config/rclone/rclone.conf):

bash 复制代码
mkdir -p ~/.config/rclone

cat << 'EOF' > ~/.config/rclone/rclone.conf
[ali-oss]
type = s3
provider = Alibaba
access_key_id = <你的阿里云RAM账号AK>
secret_access_key = <你的阿里云RAM账号SK>
endpoint = oss-cn-hangzhou.aliyuncs.com   # 替换为你的 OSS Endpoint

[aws-s3]
type = s3
provider = AWS
access_key_id = <你的AWS IAM账号AK>
secret_access_key = <你的AWS IAM账号SK>
region = ap-southeast-1                   # 替换为你的 S3 存储桶区域代码
EOF
3. 验证连通性
bash 复制代码
# 测试阿里云 OSS 连通性
rclone lsjson ali-oss:uat-atm-csgo/ --max-depth 1

# 测试 AWS S3 连通性
rclone lsjson aws-s3:prod-baxi-sbl-s3/ --max-depth 1
# 模拟运行(预演,不实际传输)
rclone copy ali-oss:your-oss-bucket-name aws-s3:your-s3-bucket-name --dry-run

三、 核心迁移脚本与调优参数

百万级海量小文件核心避坑指南
  • 严禁使用 --fast-list:对于百万级文件,这会导致内存构建索引极其漫长(需等待 15-30 分钟才开始传输)。
  • 必须使用 --no-traverse:告诉 Rclone 跳过目标桶的遍历,解决 S3 分页拉取限制和漏文件问题,实现即刻启动传输。
1. 迁移自动化脚本 (sync_oss.sh)
bash 复制代码
cat << 'EOF' > /data/scripts/sync_oss.sh
#!/bin/bash
# =================================================================
# 阿里云 OSS 到 AWS S3 百万级小文件迁移/同步脚本
# =================================================================

LOG_FILE="./rclone_sync.log"

> ${LOG_FILE}
echo "=== 迁移任务启动时间: $(date) ===" >> ${LOG_FILE}

rclone copy ali-oss:uat-atm-csgo/item/ aws-s3:prod-baxi-sbl-s3/item/ \
  --transfers 64 \
  --checkers 128 \
  --buffer-size 16M \
  --no-traverse \
  --stats 5s \
  -P >> ${LOG_FILE} 2>&1

echo "=== 迁移任务完成时间: $(date) ===" >> ${LOG_FILE}
EOF

chmod +x /data/scripts/sync_oss.sh

#本次使用的脚本  等待了十几分钟才开始传输,可尝试上面脚本
#!/bin/bash

LOG_FILE="./rclone_sync.log"

> ${LOG_FILE}
echo "=== 迁移任务启动时间: $(date) ===" >> ${LOG_FILE}

rclone copy ali-oss:uat-atm-csgo/item/ aws-s3:prod-baxi-sbl-s3/item/ \
  --transfers 64 \
  --checkers 128 \
  --fast-list \
  --buffer-size 16M \
  --stats 10s \
  -v >> ${LOG_FILE} 2>&1

echo "=== 迁移任务完成时间: $(date) ===" >> ${LOG_FILE}
2. 核心性能调优参数解析
参数 推荐配置 作用说明
--transfers 64 并发传输文件数。海量小文件强烈建议设置为 32-128 提升 IOPS 吞吐。
--checkers 128 文件比对检查线程数,充分利用多核 CPU。
--buffer-size 16M 单线程内存缓冲区大小。64 线程约消耗 1GB 内存,兼顾性能与安全。
--no-traverse 开启 不遍历目标端目录,启动即传,避免海量小文件比对卡顿。
--stats 5s 每 5 秒打印一次干净的传输汇总进度表。

四、 后台运维与监控指令

1. 启动迁移任务
bash 复制代码
cd /data/scripts
nohup ./sync_oss.sh > /dev/null 2>&1 &
2. 常用监控过滤指令
  • 实时查看传输进度(剔除刷屏的文件名):
    tail -f rclone_sync.log | grep -v "INFO"
  • 快速获取最新网速与传输总量:
    grep "Transferred:" rclone_sync.log | tail -n 2
  • 统计已成功传输的文件数:
    grep -c "Copied (new)" rclone_sync.log
  • 实时监控是否有传输错误:
    grep -i "error" rclone_sync.log

五、 数据校验与定时增量配置

1. 汇总核对
bash 复制代码
# 核对源端 OSS 文件数与大小 注: 数据量大文件过多勿轻易尝试oss会产生过大流量
rclone size ali-oss:uat-atm-csgo/item/

# 核对目的端 S3 文件数与大小
rclone size aws-s3:prod-baxi-sbl-s3/item/
相关推荐
小马同学-2 小时前
04 容器存储知识点
运维·docker·云计算
小马同学-3 小时前
03 容器网络
运维·云计算
论文复现现场4 小时前
课程作业要跑 PyTorch 训练,学校机房不够用去哪租?云 GPU 选型、环境迁移与防丢数据指南
人工智能·pytorch·深度学习·云计算·gpu·cuda
ai小陈13 小时前
CUDA Stream实战:让数据传输与GPU计算真正重叠
人工智能·深度学习·ai·pdf·云计算·gpu算力
武汉唯众智创14 小时前
云计算实训室建设指南(2026版):从技能大赛赛项标准反推架构、课程与落地路径
云原生·kubernetes·云计算·云计算实训室·云计算教学平台·职业技能大赛
红海云17 小时前
Prompt越长越好吗?何时该停手
云计算
红海云21 小时前
DeepSeek Harness 的插件化边界
云计算
honsor1 天前
工业级网口温湿度变送器 ModbusTCP 机房动环环境监测终端
运维·网络·人工智能·物联网·安全·云计算·智能温湿度监测系统
月落汀兰1 天前
从需求到上线:华为云搭建高可用 Web 站点,ECS/RDS/ELB/AS 组件协同实践
华为云·云计算
月落汀兰1 天前
云上故障怎么排查?华为云 IAM 权限、CES 监控、LTS 日志、CTS 审计完整指南
华为云·云计算