rclone
云存储文件同步工具
补充说明
rclone 是一款功能强大的命令行工具,用于管理和同步各种云存储服务中的文件。支持 40+ 种云存储后端,包括 Google Drive、Dropbox、OneDrive、Amazon S3、阿里云 OSS、腾讯云 COS、天翼云、WebDAV 等。
快速安装
Linux / macOS
# 一键安装(官方脚本)
curl https://rclone.org/install.sh | bash
# 或直接下载二进制(以 linux-amd64 为例)
curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64
cp rclone /usr/local/bin/
chmod 755 /usr/local/bin/rclone
Windows (PowerShell)
# 使用 winget
winget install Rclone.Rclone
# 或手动下载安装
# 访问 https://rclone.org/downloads/ 下载 Windows 版本
Docker
docker run --rm -it -v ~/.config/rclone:/config/rclone rclone/rclone config
语法
rclone [选项] 命令 [参数]
初始化配置
# 交互式配置新存储后端
rclone config
# 非交互式配置(以 WebDAV 为例)
rclone config create mywebdav webdav url=https://example.com/dav vendor=nextcloud user=myuser pass=$(rclone obscure mypassword)
常用命令
| 命令 | 说明 |
|---|---|
config |
管理远程存储配置 |
copy |
复制文件(跳过已存在的,增量传输) |
sync |
单向同步(使目标与源完全一致) |
bisync |
双向同步 |
move |
移动文件(复制后删除源) |
ls / lsd / lsl |
列表查看(文件/目录/详细) |
size |
显示存储总大小和文件数 |
tree |
树形显示目录结构 |
mkdir / rmdir |
创建/删除空目录 |
delete / purge |
删除文件/清空目录 |
mount |
将云存储挂载为本地文件系统 |
rcd |
以守护进程方式运行 RPC 服务 |
cryptcheck |
检查加密完整性 |
genconfig |
生成参考配置文件 |
常用选项
| 选项 | 说明 |
|---|---|
-P, --progress |
显示传输进度 |
--dry-run |
试运行(仅显示将要执行的操作) |
--bwlimit <速率> |
限制带宽(如 2M 表示 2MB/s) |
--exclude <模式> |
排除匹配的文件 |
--include <模式> |
仅包含匹配的文件 |
--max-size <大小> |
跳过大于指定大小的文件 |
--min-size <大小> |
跳过小于指定大小的文件 |
--delete-empty-src-dirs |
移动后删除空源目录 |
--ignore-existing |
跳过已存在的文件(不覆盖) |
--ignore-times |
忽略修改时间,强制覆盖 |
--retries <次数> |
失败重试次数(默认 3) |
--transfers <数量> |
并行传输数(默认 4) |
--checkers <数量> |
并行检查数(默认 8) |
--log-file <文件> |
日志输出到文件 |
-i, --interactive |
交互模式(执行前确认) |
常见存储后端配置
WebDAV(通用)
# Nextcloud / OwnCloud
rclone config create mywebdav webdav \
url=https://example.com/remote.php/dav/files/username \
vendor=nextcloud \
user=username \
pass=$(rclone obscure "your_password")
阿里云 OSS
# 需先创建 RAM 子用户并获取 AccessKey
rclone config create aliyunoss s3 \
provider=Alibaba \
env_auth=false \
access_key_id=LTAI****** \
secret_access_key=****** \
endpoint=oss-cn-hangzhou.aliyuncs.com \
acl=private
腾讯云 COS
rclone config create tencentcos s3 \
provider=TencentCOS \
env_auth=false \
access_key_id=AKID****** \
secret_access_key=****** \
endpoint=cos.ap-guangzhou.myqcloud.com \
acl=default
Google Drive
# 交互式认证(需浏览器打开链接授权)
rclone config create gdrive drive scope=drive
常见使用场景
1. 本地文件备份到云存储
# 增量复制(仅传输新增/变化的文件)
rclone copy /data/backups mydrive:Backups -P
# 完全同步(删除目标端多余文件)
rclone sync /data/www mydrive:Website --delete-excluded -P
2. 云存储挂载为本地磁盘
# 挂载到本地目录(Linux)
mkdir -p ~/mydrive
rclone mount mydrive: ~/mydrive --daemon --vfs-cache-mode writes &
# 卸载
fusermount -u ~/mydrive
3. 服务器间文件传输
# 直接在两个云存储之间传输(不走本地流量)
rclone copy aliyunoss:bucket/path tencentcos:bucket/path -P
# 本地到远程服务器
rclone copy /local/data vps:~/backup --bwlimit 10M -P
4. 定时备份(结合 cron)
# 编辑 crontab
crontab -e
# 每天凌晨 2 点执行备份
0 2 * * * /usr/bin/rclone sync /data mydrive:Backup --log-file /var/log/rclone-backup.log
5. 加密备份
# 先创建加密 remote
rclone config create mycrypt crypt \
remote=mydrive:EncryptedBackup \
password=$(rclone obscure "your-crypt-password")
# 通过加密 remote 上传
rclone copy /local/data mycrypt: -P
6. 增量实时同步(使用 inotify)
# 安装 inotify-tools(Debian/Ubuntu)
apt install inotify-tools
# 使用 inotifywait 触发 rclone
inotifywait -mr --format '%w%f' -e modify,create,delete,move /watch/dir |
while read file; do
rclone copy /watch/dir mydrive:WatchDir -P
done
语法详解
# 交互式配置新存储
rclone config
# 列出所有配置的远程存储
rclone listremotes
# 列出远程存储中的文件
rclone ls mydrive:Documents
# 将本地目录复制到云存储
rclone copy /home/user/photos mydrive:Photos
# 从云存储下载文件
rclone copy mydrive:Documents/report.pdf ./downloads/
# 同步(使目标与源完全一致)
rclone sync /local/data mydrive:Backup --progress
# 双向同步
rclone bisync mydrive:Work ./work --resync
# 将云存储挂载为本地目录
rclone mount mydrive: ~/mydrive --daemon
# 显示存储使用量
rclone size mydrive:Photos
# 树形显示
rclone tree mydrive:Documents
# 仅复制新文件(跳过已有文件)
rclone copy mydrive:Videos /local/videos --ignore-existing
# 限制带宽
rclone copy source: dest: --bwlimit 2M
# 排除特定文件
rclone sync /local mydrive:Backup --exclude "*.tmp"
# 加密传输
rclone copy /local mydrive:Backup --crypt-remote myencrypt:
# 交互式复制
rclone copy mydrive: mydrive2: -i
# 试运行(不实际执行)
rclone sync /local mydrive:Backup --dry-run