rclone 云存储同步工具:Docker 部署文件传输瑞士军刀
痛点:你的文件散落在多少个云盘里?
Google Drive 有工作文件,OneDrive 有学习资料,阿里云盘存着电影,S3 跑着业务数据,NAS 里还有家庭照片。
想同步、备份、迁移这些文件的时候,你是不是也遇到过:
- 跨云迁移:从阿里云盘搬到 OneDrive,下载再上传?几十 GB 的文件折腾一整天
- 定时备份:NAS 数据每天备份到云端,手动操作漏了一次就焦虑
- 远程访问:想用服务器挂载 Google Drive 当网络硬盘用,结果发现 FUSE 配置复杂
- 加密传输:文件传到云端前想加密,怕隐私泄露
rclone 就是专门解决这些问题的——一个命令行工具,统一管理 40+ 云存储后端,同步、备份、加密、挂载全搞定。
rclone 是什么?
rclone 是 Nick Craig-Wood 2012 年用 Go 写的云存储同步工具,灵感来自 rsync,但针对云存储做了全面优化。
核心指标:
| 指标 | 数据 |
|---|---|
| ⭐ GitHub Stars | 52.1k |
| 🦀 语言 | Go |
| 📦 最新版 | v1.69.2(2026-06 活跃开发中) |
| 📄 许可证 | MIT |
| ☁️ 支持后端 | 40+(详见下方) |
| 🐳 Docker 镜像大小 | ~50MB |
支持的后端(精选):
| 类别 | 服务 |
|---|---|
| ☁️ 公有云 | Google Drive、OneDrive、Dropbox、Box |
| 🇨🇳 国内云 | 阿里云盘、阿里云 OSS、腾讯 COS、华为 OBS、天翼云、七牛、又拍云 |
| 🗄️ 对象存储 | AWS S3、MinIO、Backblaze B2、Wasabi、Cloudflare R2 |
| 📁 文件协议 | SFTP、FTP、WebDAV、HTTP |
| 🔒 加密 | crypt(本地加密后上传) |
rclone vs 其他同步工具
| 特性 | rclone | Syncthing | rsync | Restic |
|---|---|---|---|---|
| 云存储支持 | 40+ 后端 🏆 | ❌ 仅本地设备间 | ❌ 仅本地/SSH | ❌ 仅备份到 repo |
| 双向同步 | ✅ | ✅ | ❌ 单向 | ❌ 单向(备份) |
| Docker 部署 | ✅ 官方镜像 | ✅ 官方镜像 | ❌ 无官方 | ✅ 官方镜像 |
| 加密传输 | ✅ crypt 后端 | ✅ TLS | ✅ SSH | ✅ 内置加密 |
| FUSE 挂载 | ✅ mount 命令 | ❌ | ❌ | ❌ |
| 增量同步 | ✅ | ✅ | ✅ | ✅ |
| 学习曲线 | 中 | 低 | 低 | 中 |
| 适合场景 | 云备份/迁移/挂载 | 设备间实时同步 | 本地文件同步 | 加密备份 |
一句话选型:
- 要把文件传到云端 → rclone
- 要在设备间实时同步 → Syncthing
- 要加密备份到本地或云端 → Restic
- 要在服务器之间镜像 → rsync
Docker 部署 rclone
方案一:一次性操作(复制/同步)
# 单次同步:本地目录 → 云端docker run --rm \ -v /your/local/data:/data:ro \ -v /home/user/rclone-config:/config/rclone \ rclone/rclone \ sync /data remote:backup-folder \ --progress --verbose
--rm:执行完自动删除容器,不留痕迹。
方案二:持续运行的服务(定时备份 + 远程挂载)
version: "3.8"
services: rclone: image: rclone/rclone:latest container_name: rclone command: "" # 由 entrypoint 接管 entrypoint: ["sh", "-c", ""] # 自定义,见下文 cap_add: - SYS_ADMIN # 挂载需要 devices: - /dev/fuse # FUSE 挂载 security_opt: - apparmor:unconfined volumes: - ./config:/config/rclone - /mnt/rclone-mount:/mnt/rclone:shared # 挂载点 - /your/local/data:/data:ro # 要备份的源数据 restart: unless-stopped方案三:自动化定时备份
services: rclone-backup: image: rclone/rclone:latest container_name: rclone-backup entrypoint: ["sh", "-c", " while true; do echo '[$(date)] Starting backup...' rclone sync /data remote:backup-$(date +%Y%m%d) \ --progress --verbose --exclude '*.tmp' echo '[$(date)] Backup complete. Sleeping 24h...' sleep 86400 done "] volumes: - ./config:/config/rclone - /your/local/data:/data:ro restart: unless-stopped配置 rclone:添加存储后端
首次使用需要运行 rclone config 交互式配置,或者直接复制已有的 rclone.conf:
# 方式一:交互式配置(推荐)docker run -it --rm \ -v /home/user/rclone-config:/config/rclone \ rclone/rclone config
# 方式二:直接复制已有配置cp ~/.config/rclone/rclone.conf ./config/配置示例:Google Drive
在 rclone config 交互中选择 Google Drive,按提示获取 API 凭据即可。完成后 rclone.conf 大概长这样:
[gdrive]type = drivescope = driveclient_id = xxx.apps.googleusercontent.comclient_secret = xxxtoken = {"access_token":"...","token_type":"Bearer",...}配置示例:阿里云盘
[aliyun]type = alidriveclient_id =client_secret =refresh_token = xxxroot_folder_id = root阿里云盘不需要 client_id/client_secret,直接获取 refresh_token 即可。
rclone 常用命令
1. 文件列表
rclone ls remote:path # 列出文件rclone lsd remote:path # 列出目录rclone lsl remote:path # 列出文件(含时间戳)2. 复制与同步
# copy:增量复制,不删除目标端多余文件rclone copy /local/data remote:backup
# sync:完全同步,目标端多余文件会被删除rclone sync /local/data remote:backup
# 带过滤的同步rclone sync /data remote:backup \ --exclude '*.tmp' \ --exclude 'node_modules/**' \ --max-size 500M3. 移动和删除
rclone move /local/data remote:archive # 移动rclone delete remote:old-files # 删除rclone purge remote:trash # 清空目录4. FUSE 挂载(把云盘当本地硬盘用)
# Docker 中挂载需要 --cap-add SYS_ADMIN + /dev/fuserclone mount remote: /mnt/rclone \ --allow-other \ --read-only \ --daemon实战场景
场景一:每日备份网站数据到 S3
# crontab 或 Docker 定时任务rclone sync /var/www/html s3:my-website-backup \ --exclude 'cache/**' \ --backup-dir s3:my-website-backup/old-$(date +%Y%m%d)场景二:NAS 数据加密备份到云端
# rclone.conf 配置 crypt 后端[data-encrypted]type = cryptremote = gdrive:encrypted-backuppassword = <加密密码>salt = <加密盐值>
# 使用rclone sync /nas/data data-encrypted:/场景三:阿里云盘 → OneDrive 跨云迁移
# 先配置好两个 remote# aliyun: 阿里云盘# onedrive: OneDrive
# 直接跨云同步,不需经过本地硬盘docker run --rm \ -v ./config:/config/rclone \ rclone/rclone \ sync aliyun:/ onedrive:/migrated-from-aliyun \ --progress --transfers 8性能调优
# 并行传输rclone sync ... --transfers 8 # 默认 4,最高可设 32
# 分块大小rclone sync ... --s3-chunk-size 64M # 大文件调大块
# 带宽限制rclone sync ... --bwlimit 10M # 限制 10MB/s,避免占满带宽
# 检查模式rclone sync ... --checksum # 用校验和而非时间戳比较
# 断点续传rclone sync ... --ignore-existing # 跳过已存在的文件FAQ
Q:rclone 和 rsync 有什么区别?
A:rsync 只支持本地和 SSH 传输,rclone 支持 40+ 云存储后端。rsync 基于文件差异传输(更省带宽),rclone 基于文件级别同步(不支持增量差异)。
Q:Docker 部署 rclone 配置文件放哪?
A:默认读取 /config/rclone/rclone.conf。挂载一个本地目录即可:-v ./config:/config/rclone。
Q:rclone 支持增量同步吗?
A:支持。copy 和 sync 都是增量的——只传输新增和变化的文件。首次全量,后续增量。
Q:FUSE 挂载有什么限制?
A:Docker 中需要 --cap-add SYS_ADMIN 和 --device /dev/fuse。挂载性能不如本地文件系统,适合读多写少的场景(如看视频)。
Q:rclone 免费吗?
A:完全免费开源,MIT 协议。没有功能限制,没有付费版,没有云服务绑定。
Q:国内用户能用 rclone 吗?
A:完美支持。内置阿里云盘、腾讯 COS、华为 OBS、天翼云、七牛、又拍云等国内后端。
总结
rclone 是云存储时代的瑞士军刀——一个工具管理 40+ 后端,同步、备份、加密、挂载全搞定。
用 Docker 部署 rclone 的好处:
- ✅ 无需在宿主机安装 Go 或 rclone 二进制
- ✅ 配置文件持久化,升级容器不丢失
- ✅ 定时任务用 Docker 跑,不需要 crontab 配置
- ✅ FUSE 挂载在容器内隔离,不污染宿主机
- ✅ 团队共享同一套配置和脚本
不管你是个人用户管理照片备份,还是运维工程师做云端数据迁移,rclone + Docker 都是最趁手的工具。
本文由小啪撰写,基于 rclone v1.69.2。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!