强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

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 S3s3AWS S3 及兼容服务(MinIO、阿里云 OSS、腾讯云 COS 等)
Google Cloud Storagegoogle cloud storageGCS
Azure Blob Storageazureblob微软 Azure 对象存储
阿里云 OSSs3通过 S3 兼容协议
腾讯云 COSs3通过 S3 兼容协议
Backblaze B2b2性价比极高的对象存储
Wasabis3通过 S3 兼容协议
MinIOs3自建对象存储

文件存储 / 网盘

云服务Rclone Remote 名称说明
Google DrivedriveGoogle 云端硬盘
OneDriveonedrive微软 OneDrive
DropboxdropboxDropbox
BoxboxBox.com
Nextcloudwebdav通过 WebDAV 协议
pCloudpcloudpCloud 网盘
百度网盘baidubce百度 BCE 协议
坚果云webdav通过 WebDAV 协议

文件传输协议

协议Rclone Remote 名称说明
SFTPsftpSSH 文件传输协议
FTPftp文件传输协议
WebDAVwebdavWeb 分布式创作和版本控制
HTTPhttpHTTP 只读访问

其他

服务/协议Rclone Remote 名称说明
本地磁盘local本地文件系统
内存memory内存文件系统(用于测试)
Jottacloudjottacloud挪威云存储
HiDrivehidriveStrato HiDrive
MegamegaMega.nz
SeafileseafileSeafile 网盘

查看完整列表:

# 列出所有支持的远程存储类型
rclone listremotes --all

1.3 Rclone vs rsync

很多用户第一次接触 Rclone 时会问:“我已经在用 rsync 了,为什么还需要 Rclone?”

核心区别对比

特性rsyncRclone
设计目标本地/SSH 远程同步云存储同步与管理
传输协议rsync 协议、SSH70+ 种云存储协议
云存储支持❌ 不支持✅ 原生支持
本地同步✅ 强项✅ 支持
增量传输✅ 算法级增量✅ 文件级增量
双向同步❌ 不支持✅ bisync 支持
加密需配合其他工具✅ 内置 crypt
挂载❌ 不支持✅ 内置 mount
多线程单线程✅ 多线程传输
带宽限制--bwlimit--bwlimit
断点续传部分支持✅ 完整支持
校验checksum + modtimehash + modtime + size
过滤规则include/excludeinclude/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 | ...   │
└─────────────────────────────────────────────────┘

传输流程

  1. 列举源端文件:列出源 Remote 中所有文件及其元数据(大小、修改时间、哈希值)
  2. 列举目标端文件:列出目标 Remote 中的文件
  3. 比较差异:根据 modtime、size、hash 判断哪些文件需要传输
  4. 过滤:应用 include/exclude 规则
  5. 传输:多线程并行传输文件
  6. 校验:传输完成后验证文件完整性
  7. 清理:(sync 模式下)删除目标端多余的文件

1.6 版本历史与里程碑

版本时间重要特性
v1.002014首个正式版本,支持 Drive/S3/Dropbox
v1.302017新增 mount 命令(FUSE 挂载)
v1.502020新增 bisync 双向同步(实验性)
v1.552021VFS 缓存大幅优化
v1.602022新增 serve s3 命令
v1.652024bisync 正式稳定
v1.692025性能优化、新 backend 支持

1.7 社区与生态


注意事项

⚠️ 首次使用建议

  1. 先在测试环境/测试数据上练习
  2. 使用 --dry-run 参数预览操作结果,确认无误后再执行
  3. rclone sync 会删除目标端多余的文件,请务必确认方向正确
  4. 配置文件中包含认证信息,请妥善保管(~/.config/rclone/rclone.conf

⚠️ API 限制

  • 各云存储服务有 API 请求频率限制(Rate Limit),Rclone 会自动处理退避重试
  • 大量小文件传输时需注意 API 配额
  • 建议使用 --tpslimit 参数控制每秒请求数

扩展阅读


下一章第 2 章 - 安装与配置 →