Rclone 数据迁移完全指南 / 第 1 章 - Rclone 概述
第 1 章 - Rclone 概述
1.1 Rclone 是什么?
Rclone(发音 /ˈɑːrˌkloʊn/,全称 “Remote Clone”)是一个开源的命令行程序,用于管理云端存储中的文件。它由 Nick Craig-Wood 于 2012 年创建,目前已成为 GitHub 上 Star 数超过 48k 的顶级开源项目。
Rclone 的核心能力:
- 同步(Sync):在本地与云端、或云端与云端之间同步文件
- 传输(Transfer):高效上传/下载文件,支持断点续传
- 挂载(Mount):将云存储挂载为本地磁盘
- 加密(Crypt):透明加密/解密文件
- 管理(Manage):对云端文件进行复制、移动、删除等操作
💡 一句话理解:Rclone 就是云存储世界的
rsync+cp+mount+gpg的组合体。
1.2 支持的云存储服务
Rclone 支持超过 70 种 云存储和协议,以下是主流支持列表:
对象存储(Object Storage)
| 云服务 | Rclone Remote 名称 | 说明 |
|---|---|---|
| Amazon S3 | s3 | AWS S3 及兼容服务(MinIO、阿里云 OSS、腾讯云 COS 等) |
| Google Cloud Storage | google cloud storage | GCS |
| Azure Blob Storage | azureblob | 微软 Azure 对象存储 |
| 阿里云 OSS | s3 | 通过 S3 兼容协议 |
| 腾讯云 COS | s3 | 通过 S3 兼容协议 |
| Backblaze B2 | b2 | 性价比极高的对象存储 |
| Wasabi | s3 | 通过 S3 兼容协议 |
| MinIO | s3 | 自建对象存储 |
文件存储 / 网盘
| 云服务 | Rclone Remote 名称 | 说明 |
|---|---|---|
| Google Drive | drive | Google 云端硬盘 |
| OneDrive | onedrive | 微软 OneDrive |
| Dropbox | dropbox | Dropbox |
| Box | box | Box.com |
| Nextcloud | webdav | 通过 WebDAV 协议 |
| pCloud | pcloud | pCloud 网盘 |
| 百度网盘 | baidubce | 百度 BCE 协议 |
| 坚果云 | webdav | 通过 WebDAV 协议 |
文件传输协议
| 协议 | Rclone Remote 名称 | 说明 |
|---|---|---|
| SFTP | sftp | SSH 文件传输协议 |
| FTP | ftp | 文件传输协议 |
| WebDAV | webdav | Web 分布式创作和版本控制 |
| HTTP | http | HTTP 只读访问 |
其他
| 服务/协议 | Rclone Remote 名称 | 说明 |
|---|---|---|
| 本地磁盘 | local | 本地文件系统 |
| 内存 | memory | 内存文件系统(用于测试) |
| Jottacloud | jottacloud | 挪威云存储 |
| HiDrive | hidrive | Strato HiDrive |
| Mega | mega | Mega.nz |
| Seafile | seafile | Seafile 网盘 |
查看完整列表:
# 列出所有支持的远程存储类型
rclone listremotes --all
1.3 Rclone vs rsync
很多用户第一次接触 Rclone 时会问:“我已经在用 rsync 了,为什么还需要 Rclone?”
核心区别对比
| 特性 | rsync | Rclone |
|---|---|---|
| 设计目标 | 本地/SSH 远程同步 | 云存储同步与管理 |
| 传输协议 | rsync 协议、SSH | 70+ 种云存储协议 |
| 云存储支持 | ❌ 不支持 | ✅ 原生支持 |
| 本地同步 | ✅ 强项 | ✅ 支持 |
| 增量传输 | ✅ 算法级增量 | ✅ 文件级增量 |
| 双向同步 | ❌ 不支持 | ✅ bisync 支持 |
| 加密 | 需配合其他工具 | ✅ 内置 crypt |
| 挂载 | ❌ 不支持 | ✅ 内置 mount |
| 多线程 | 单线程 | ✅ 多线程传输 |
| 带宽限制 | --bwlimit | --bwlimit |
| 断点续传 | 部分支持 | ✅ 完整支持 |
| 校验 | checksum + modtime | hash + modtime + size |
| 过滤规则 | include/exclude | include/exclude/regex/size/date |
| 学习曲线 | 低 | 中等 |
| 安装复杂度 | 通常预装 | 需手动安装 |
什么时候用 rsync?
- 本地磁盘之间的文件同步
- 通过 SSH 在两台 Linux 服务器之间同步
- 需要块级增量传输(只传输文件变化部分)的大文件
- 系统已预装 rsync,不想安装额外工具
什么时候用 Rclone?
- 任何涉及云存储的文件操作
- 需要在多个云平台之间迁移数据
- 需要加密存储
- 需要将云存储挂载为本地磁盘
- 需要双向同步
- 需要高级过滤规则(按大小、日期、正则)
混合使用示例
# 用 rsync 同步本地两个目录
rsync -avz /data/project/ /backup/project/
# 用 rclone 将本地目录同步到 S3
rclone sync /data/project/ s3:my-bucket/project/ --progress
# 用 rclone 将 S3 数据同步到 Google Drive(跨云迁移)
rclone sync s3:my-bucket/ gdrive:backup/ --progress
1.4 适用场景
场景 1:跨云数据迁移
业务背景:公司从 AWS 迁移到阿里云,需要将 10TB 的 S3 数据迁移到 OSS。
# 配置好 AWS S3 和阿里云 OSS 的 remote 后
rclone sync aws-s3:source-bucket/ ali-oss:dest-bucket/ \
--transfers 32 \
--checkers 16 \
--progress \
--log-file migration.log \
--log-level INFO
场景 2:定时备份
业务背景:每天凌晨将服务器数据备份到云端。
#!/bin/bash
# backup.sh - 每日备份脚本
DATE=$(date +%Y-%m-%d)
rclone sync /data/important/ \
b2:my-backup/daily/${DATE}/ \
--backup-dir b2:my-backup/previous/ \
--progress \
--log-file /var/log/rclone-backup.log \
--log-level INFO
场景 3:多端文件同步
业务背景:个人文件在 Google Drive、OneDrive 和本地 NAS 之间保持同步。
# Google Drive → OneDrive
rclone sync gdrive:documents/ onedrive:documents/ --progress
# Google Drive → NAS (SFTP)
rclone sync gdrive:documents/ nas-sftp:/volume1/documents/ --progress
场景 4:静态资源 CDN 分发
业务背景:将构建产物同步到多个 CDN 源站(S3 + OSS)。
# 构建完成后同步到 AWS S3
rclone sync ./dist/ s3:cdn-bucket/assets/ --progress
# 同步到阿里云 OSS
rclone sync ./dist/ ali-oss:cdn-bucket/assets/ --progress
场景 5:数据归档与合规
业务背景:将超过 90 天的日志文件从热存储迁移到冷存储。
# 将 90 天前的日志文件移动到 Glacier 存储类
rclone move s3:logs-bucket/ s3:logs-archive/ \
--min-age 90d \
--s3-storage-class GLACIER \
--progress
场景 6:团队协作文件共享
业务背景:将项目文档通过 WebDAV 共享给团队成员。
# 启动 WebDAV 服务,共享本地目录
rclone serve webdav /data/project-docs/ --addr :8080 --user admin --pass mypassword
1.5 Rclone 的架构与工作原理
核心架构
┌─────────────────────────────────────────────────┐
│ Rclone CLI │
├─────────────────────────────────────────────────┤
│ 命令层 (Commands) │
│ copy | sync | move | mount | serve | bisync │
├─────────────────────────────────────────────────┤
│ 过滤层 (Filter) │
│ include | exclude | regex | size | age │
├─────────────────────────────────────────────────┤
│ 传输层 (Transfer) │
│ 多线程 | 断点续传 | 限速 | 重试 | 校验 │
├─────────────────────────────────────────────────┤
│ VFS 层 (Virtual File System) │
│ 缓存 | 挂载 | 文件句柄管理 │
├─────────────────────────────────────────────────┤
│ 加密层 (Crypt) │
│ 文件名加密 | 内容加密 | 透明加解密 │
├─────────────────────────────────────────────────┤
│ 后端层 (Backend / Remote) │
│ s3 | drive | onedrive | sftp | webdav | ... │
└─────────────────────────────────────────────────┘
传输流程
- 列举源端文件:列出源 Remote 中所有文件及其元数据(大小、修改时间、哈希值)
- 列举目标端文件:列出目标 Remote 中的文件
- 比较差异:根据 modtime、size、hash 判断哪些文件需要传输
- 过滤:应用 include/exclude 规则
- 传输:多线程并行传输文件
- 校验:传输完成后验证文件完整性
- 清理:(sync 模式下)删除目标端多余的文件
1.6 版本历史与里程碑
| 版本 | 时间 | 重要特性 |
|---|---|---|
| v1.00 | 2014 | 首个正式版本,支持 Drive/S3/Dropbox |
| v1.30 | 2017 | 新增 mount 命令(FUSE 挂载) |
| v1.50 | 2020 | 新增 bisync 双向同步(实验性) |
| v1.55 | 2021 | VFS 缓存大幅优化 |
| v1.60 | 2022 | 新增 serve s3 命令 |
| v1.65 | 2024 | bisync 正式稳定 |
| v1.69 | 2025 | 性能优化、新 backend 支持 |
1.7 社区与生态
- GitHub:https://github.com/rclone/rclone
- 论坛:https://forum.rclone.org/
- 文档:https://rclone.org/
- Rclone Browser:GUI 图形界面(社区维护)
- Rclone Mount Manager:Windows 挂载管理器
- rclone-webui-react:Web 管理界面
注意事项
⚠️ 首次使用建议
- 先在测试环境/测试数据上练习
- 使用
--dry-run参数预览操作结果,确认无误后再执行rclone sync会删除目标端多余的文件,请务必确认方向正确- 配置文件中包含认证信息,请妥善保管(
~/.config/rclone/rclone.conf)
⚠️ API 限制
- 各云存储服务有 API 请求频率限制(Rate Limit),Rclone 会自动处理退避重试
- 大量小文件传输时需注意 API 配额
- 建议使用
--tpslimit参数控制每秒请求数
扩展阅读
下一章:第 2 章 - 安装与配置 →