阿里云 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/
相关推荐
AKAMAI6 小时前
实时可观测性:Akamai Cloud Pulse 警报功能正式发布
人工智能·云计算
其实防守也摸鱼9 小时前
信创是什么:一文读懂信息技术应用创新
人工智能·阿里云·云计算·github·copilot
行业研究员11 小时前
AgentOps实测:腾讯云 ADP4.0 企业级智能体平台避坑指南
云计算·腾讯云·agentops
tg_xianheyun13 小时前
BytePlus CDN加速如何优化海外访问体验?
云计算·cdn·cdn加速·云直播·byteplus
北风toto14 小时前
阿里云 MaxCompute通过python脚本调用odps流程和执行sql
python·阿里云·odps
聚搜云——JuSouClouD15 小时前
武汉阿里云代理商:云虚拟主机需要自己备份吗?网站文件误删后还能恢复吗
阿里云·云计算
一路向北finish15 小时前
《CentOS7 OpenStack Mitaka 全栈部署实战:双节点搭建全流程与典型故障排坑指南》
运维·mysql·serverless·云计算·openstack
tg_xianheyun17 小时前
2026BytePlus CDN加速应用场景全面解析
服务器·数据库·阿里云·云计算·cdn·全球访问优化·云直播
阿里云云原生18 小时前
企业级实时数据平台建设:利用存算分离 Kafka 实现低成本、高可靠入湖
分布式·阿里云·云原生·kafka