一个用于将阿里云OSS和腾讯云COS中的文件迁移到MinIO的Python工具。支持断点续传、文件校验、状态追踪等功能。
- ✅ 支持从阿里云OSS和腾讯云COS下载文件
- ✅ 支持上传文件到MinIO
- ✅ 保持原始文件路径结构
- ✅ 支持单文件和批量迁移
- ✅ 交互式操作界面
- 🛡️ 文件完整性验证(MD5校验)
- 🔄 断点续传支持
- 📊 详细的迁移状态追踪
- 📁 自动跳过目录对象
- 🔁 支持迁移失败重试
- 🔍 MinIO连接测试功能
- ✅ 文件上传前后大小校验
- ✅ 下载文件MD5校验
- ✅ 上传验证机制
- ✅ 状态持久化存储
- 按来源分别存储(aliyun/tencent目录)
- 保持原始文件路径结构
- 使用JSON文件记录迁移状态
- 记录每个文件的下载状态
- 记录文件hash值和大小
- 记录上传状态和时间
- 记录失败原因和时间
- 检查本地已下载文件
- 验证文件完整性
- 支持中断后继续
- 自动跳过已完成任务
- Python 3.6+
- 依赖包:
oss2 # 阿里云OSS SDK cos-python-sdk-v5 # 腾讯云COS SDK minio # MinIO Python客户端 pyyaml # 配置文件解析 tqdm # 进度条显示
-
克隆仓库:
git clone https://github.com/jiawen1929/oss-migration-tool.git cd oss-migration-tool
-
安装依赖:
pip install -r requirements.txt
-
配置:
- 复制
config.yaml.example
为config.yaml
- 填写相关配置信息
- 复制
-
配置文件设置示例:
# 阿里云OSS配置 aliyun: access_key: "your_access_key" # 从阿里云控制台获取 access_secret: "your_secret" # 从阿里云控制台获取 endpoint: "oss-cn-xxx.com" # 例如:oss-cn-hangzhou.aliyuncs.com bucket: "your-bucket" # 你的OSS bucket名称 # 腾讯云COS配置 tencent: secret_id: "your_secret_id" # 从腾讯云控制台获取 secret_key: "your_secret_key" # 从腾讯云控制台获取 region: "ap-xxx" # 例如:ap-guangzhou bucket: "your-bucket" # 你的COS bucket名称 # MinIO配置 minio: endpoint: "ip:port" # 例如:192.168.1.100:9000 access_key: "your_access_key" # MinIO访问密钥 secret_key: "your_secret_key" # MinIO密钥 bucket: "your-bucket" # MinIO bucket名称 secure: false # 使用HTTPS则设为true
-
运行程序:
python migrate_to_minio.py
- 首先使用选项9(测试MinIO上传)验证MinIO配置是否正确
- 使用选项1和2查看需要迁移的文件列表
- 确认文件列表无误后,开始迁移操作
选项 | 功能 | 说明 |
---|---|---|
1 | 列出阿里云OSS文件 | 显示文件列表及下载状态 |
2 | 列出腾讯云COS文件 | 显示文件列表及下载状态 |
3 | 下载阿里云文件 | 支持单个/批量下载 |
4 | 下载腾讯云文件 | 支持单个/批量下载 |
5 | 上传文件到MinIO | 支持单个/批量上传 |
6 | 查看已下载文件 | 显示本地文件状态 |
7 | 查看迁移状态 | 显示总体迁移进度 |
8 | 验证已上传文件 | 验证文件完整性 |
9 | 测试MinIO上传 | 测试连接配置 |
- 请妥善保管配置文件
- 不要将配置文件提交到代码仓库
- 建议使用环境变量或配置管理工具
- 确保本地有足够的存储空间
- 下载目录会按来源分别存储文件
- 注意及时清理已迁移的文件
- 建议在稳定的网络环境下操作
- 支持断点续传,不用担心网络中断
- 大文件传输可能需要较长时间
问题 | 解决方案 |
---|---|
配置文件加载失败 | 检查config.yaml格式是否正确 |
连接失败 | 检查网络连接和配置信息 |
空间不足 | 清理下载目录或增加存储空间 |
验证失败 | 重新下载或上传该文件 |
MIT License
- 🎉 初始版本发布
- ✨ 支持阿里云OSS和腾讯云COS迁移
- 🔄 支持断点续传和文件验证