rclone常用命令参数详解(含 WebDAV 挂载实战)
# 前言
Rclone 是一个命令行工具,支持在不同对象存储、网盘间同步、上传、下载数据。并且通过一些设置可以实现离线下载、服务器备份等非常实用的功能。本篇文章将讲解 Rclone 常用的一些命令参数,并补充 WebDAV 挂载这一常见场景的完整配置。
版本说明
本文写于 2022-03,基于 rclone 1.59+。2026-09 复核:命令语法基本未变,缓存参数有细微调整,请以官方文档 (opens new window)为准。
# 1. 安装 Rclone
Linux/macOS/BSD
官方提供了一键安装脚本:
curl https://rclone.org/install.sh | sudo bash
curl | sudo bash把一个远程脚本直接交给 root 执行,脚本内容变了你不会知道。介意的话先下下来看一眼再跑:curl -fsSLO https://rclone.org/install.sh && less install.sh && sudo bash install.sh。或者直接从 GitHub Releases 下二进制并校验 SHA256。
Windows 直接下载
# 2. Rclone 设置
rclone config- 进入交互式配置选项,进行添加、删除、管理网盘等操作。rclone config file- 显示配置文件的路径,一般配置文件在 ~/.config/rclone/rclone.confrclone config show- 显示配置文件信息
# 3. 命令语法
# 本地到网盘
rclone [功能选项] <本地路径> <网盘名称:路径> [参数] [参数] ...
# 网盘到本地
rclone [功能选项] <网盘名称:路径> <本地路径> [参数] [参数] ...
# 网盘到网盘
rclone [功能选项] <网盘名称:路径> <网盘名称:路径> [参数] [参数] ...
2
3
4
5
6
7
8
用法示例
rclone move -v /Download Onedrive:/Download --transfers=1
# 4. 常用功能选项
rclone copy- 复制rclone move- 移动,如果要在移动后删除空源目录,请加上--delete-empty-src-dirs参数rclone sync- 同步:将源目录同步到目标目录,只更改目标目录。rclone size- 查看网盘文件占用大小。rclone delete- 删除路径下的文件内容。rclone purge- 删除路径及其所有文件内容。rclone mkdir- 创建目录。rclone rmdir- 删除目录。rclone rmdirs- 删除指定灵境下的空目录。如果加上--leave-root参数,则不会删除根目录。rclone check- 检查源和目的地址数据是否匹配。rclone ls- 列出指定路径下所有的文件以及文件大小和路径。rclone lsl- 比上面多一个显示上传时间。rclone lsd列出指定路径下的目录rclone lsf- 列出指定路径下的目录和文件
# 5. 常用参数
-n = --dry-run- 测试运行,用来查看 rclone 在实际运行中会进行哪些操作。-P = --progress- 显示实时传输进度,500mS 刷新一次,否则默认 1 分钟刷新一次。--cache-chunk-size SizeSuffix- 块的大小,默认5M,理论上是越大上传速度越快,同时占用内存也越多。如果设置得太大,可能会导致进程中断。--cache-chunk-total-size SizeSuffix- 块可以在本地磁盘上占用的总大小,默认10G。--transfers=N- 并行文件数,默认为4。在比较小的内存的VPS上建议调小这个参数,比如128M的小鸡上使用建议设置为1。--config string- 指定配置文件路径,string为配置文件路径。--ignore-errors- 跳过错误。比如 OneDrive 在传了某些特殊文件后会提示Failed to copy: failed to open source object: malwareDetected: Malware detected,这会导致后续的传输任务被终止掉,此时就可以加上这个参数跳过错误。但需要注意 RCLONE 的退出状态码不会为0。
# 6. 日志
rclone 有 4 个级别的日志记录,ERROR,NOTICE,INFO 和 DEBUG。默认情况下,rclone 将生成 ERROR 和 NOTICE 级别消息。
-q- rclone将仅生成 ERROR 消息。-v- rclone将生成 ERROR,NOTICE 和 INFO 消息,推荐此项。-vv- rclone 将生成 ERROR,NOTICE,INFO和 DEBUG 消息。--log-level LEVEL- 标志控制日志级别。
输出日志到文件
使用 --log-file=FILE 选项,rclone 会将 Error,Info 和 Debug 消息以及标准错误重定向到 FILE,这里的 FILE 是你指定的日志文件路径。
另一种方法是使用系统的指向命令,比如:
rclone sync -v Onedrive:/DRIVEX Gdrive:/DRIVEX > "~/DRIVEX.log" 2>&1
# 7. 文件过滤
--exclude- 排除文件或目录。--include- 包含文件或目录。--filter- 文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以+开头,排除规则以-开头。
# 7.1 文件类型过滤
比如 --exclude "*.bak"、--filter "- *.bak",排除所有 bak 文件。
比如 --include "*.{png,jpg}"、--filter "+ *.{png,jpg}",包含所有 png 和 jpg 文件,排除其他文件。
--delete-excluded 删除排除的文件。需配合过滤参数使用,否则无效。
# 7.2 目录过滤
目录过滤需要在目录名称后面加上 /,否则会被当做文件进行匹配。以 / 开头只会匹配根目录(指定目录下),否则匹配所有目录。
--exclude ".git/" # 排除所有目录下的 .git 目录
--exclude "/.git/" # 只排除根目录下的 .git 目录
--exclude "{Video,Software}/" # 排除所有目录下的 Video 和 Software 目录
--exclude "/{Video,Software}/" # 只排除根目录下的 Video 和 Software 目录
--include "/{Video,Software}/**" # 仅包含根目录下的 Video 和 Software 目录的所有内容
2
3
4
5
# 7.3 文件大小过滤
默认大小单位为 kBytes ,但可以使用 k、M 或 G 后缀。
--min-size过滤小于指定大小的文件。比如--min-size 50表示不会传输小于 50k 的文件。--max-size过滤大于指定大小的文件。比如--max-size 1G表示不会传输大于 1G 的文件。
TIPS: 博主在实际使用中发现大小过滤两个选项不能同时使用。
# 7.4 过滤规则文件
--filter-from <规则文件> 从文件添加包含 / 排除规则。
过滤规则文件示例:
- secret*.jpg
+ *.jpg
+ *.png
+ file2.avi
- /dir/Trash/**
+ /dir/**
- *
2
3
4
5
6
7
这里只举例比较常用和简单的一些过滤用法,更复杂和高端的用法可以查看官方文档。
# 8. 环境变量
rclone 中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除 -- 前缀,更改 - 为 _,大写并添加前缀 RCLONE_。环境变量的优先级会低于命令行选项,即通过命令行追加相应的选项时会覆盖环境变量设定的值。
比如设置最小上传大小 --min-size 50,使用环境变量是 RCLONE_MIN_SIZE=50。当环境变量设置后,在命令行中使用 --min-size 100,那么此时环境变量的值就会被覆盖。
常用环境变量
RCLONE_CONFIG- 自定义配置文件路径RCLONE_CONFIG_PASS- 若 rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件。RCLONE_RETRIES- 上传失败重试次数,默认 3 次RCLONE_RETRIES_SLEEP- 上传失败重试等待时间,默认禁用,单位s、m、h分别代表秒、分钟、小时。RCLONE_TRANSFERS- 并行上传文件数。RCLONE_CACHE_CHUNK_SIZE- 块的大小,默认5MRCLONE_CACHE_CHUNK_TOTAL_SIZE- 块可以在本地磁盘上占用的总大小,默认10GRCLONE_IGNORE_ERRORS=true- 跳过错误
# 9. WebDAV 挂载实战(扩展场景)
# 9.1 什么是 WebDAV
WebDAV(Web-based Distributed Authoring and Versioning)是一种基于 HTTP 的文件共享协议,许多云存储服务(如 Nextcloud、OwnCloud、坚果云等)都支持 WebDAV。通过 rclone 将 WebDAV 服务挂载为本地目录,可以像访问本地文件一样操作云端数据。
# 9.2 配置 WebDAV 远程存储
首先,使用以下命令创建 WebDAV 配置:
rclone config
按照提示完成配置:
- Name:
webdav_remote(可以自定义) - Type: 选择
WebDAV - URL: 输入 WebDAV 服务器地址(如
https://dav.jianguoyun.com/dav/) - Vendor: 选择对应的云服务(如
Jianguoyun、Nextcloud等) - User: 输入用户名
- Password: 输入密码
完成后,可以通过以下命令测试连接是否正常:
rclone ls webdav_remote:
# 9.3 挂载为本地目录
选择一个本地目录作为挂载点(例如 /mnt/webdav):
sudo mkdir -p /mnt/webdav
# 9.4 配置缓存(可选但推荐)
为了提高性能,可以使用 rclone 的 VFS 缓存功能:
rclone mount webdav_remote: /mnt/webdav \
--vfs-cache-mode full \
--cache-dir /tmp/rclone-cache \
--vfs-cache-max-size 10G \
--vfs-cache-max-age 1h \
--allow-other \
--daemon
2
3
4
5
6
7
参数说明:
--vfs-cache-mode full: 启用完整缓存模式,所有读取和写入都经过本地缓存。--cache-dir: 指定缓存目录。--vfs-cache-max-size: 设置缓存的最大大小。--vfs-cache-max-age: 设置缓存的最大有效时间。--allow-other: 允许其他用户访问挂载点。--daemon: 后台运行。
# 9.5 配置为 systemd 服务(推荐)
为了实现开机自启和崩溃后自动拉起,创建 systemd 服务文件:
sudo nano /etc/systemd/system/rclone-webdav.service
填写以下内容:
[Unit]
Description=Rclone Mount for WebDAV
Documentation=https://rclone.org/commands/rclone_mount/
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/rclone mount webdav_remote: /mnt/webdav \
--vfs-cache-mode full \
--cache-dir /tmp/rclone-cache \
--vfs-cache-max-size 10G \
--vfs-cache-max-age 1h \
--allow-other \
--log-file /var/log/rclone-webdav.log \
--log-level INFO
ExecStop=/bin/fusermount -u /mnt/webdav
Restart=always
RestartSec=10
User=your-username
Group=your-group
[Install]
WantedBy=multi-user.target
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
保存并执行以下命令:
sudo systemctl daemon-reload
sudo systemctl enable rclone-webdav.service
sudo systemctl start rclone-webdav.service
# 检查服务状态
sudo systemctl status rclone-webdav.service
2
3
4
5
6
# 9.6 常见问题排查
挂载点无法访问:
# 检查服务状态
sudo systemctl status rclone-webdav.service
# 查看日志
sudo journalctl -u rclone-webdav.service -n 50
cat /var/log/rclone-webdav.log
2
3
4
5
6
文件权限问题:
确保挂载时使用了 --allow-other 参数,并正确设置了服务中的 User 和 Group。
# 9.7 带宽限制
如果需要限制带宽,可以添加以下参数:
--bwlimit 10M
# 10. 坑与边界
mount 进程被杀,挂载点会变成僵死目录。rclone mount 是用户态 FUSE 挂载,进程一旦被 OOM killer 干掉或异常退出,内核侧的挂载记录还在、用户态的处理进程却没了,这就是为什么挂载点不会自动清理、任何
ls都会卡住并报Transport endpoint is not connected。恢复要先解挂再重挂:fusermount -uz /mnt/webdav(-z是惰性卸载,能解掉正被占用的挂载点),再重启挂载。把 mount 交给 systemd 托管并配Restart=always能少踩一半这类问题。--vfs-cache-mode各档位的写入语义不同。off与minimal下,应用程序对已存在文件的随机写、以及「写完再读回」的操作会失败或读到旧内容,因为没有本地回写缓存;数据库文件、SQLite、日志追加这类场景必须用writes或full。代价是本地要留出缓存空间(--vfs-cache-max-size限制上限),且 写入返回成功不等于已经落到远端 —— 原理上写入先落本地缓存文件、再由后台异步回刷到远端 —— 缓存回刷是异步的,卸载前要留出回刷时间,别写完就umount。WebDAV 后端的能力取决于服务端实现。rclone 的
--checksum依赖服务端返回校验和,多数 WebDAV 服务不提供,此时校验会静默退化成按大小和修改时间比对(--size-only的效果);服务端如果连修改时间都不支持写入,rclone sync每次都会认为文件有变化而重传。上生产前先用rclone about和一次小文件--dry-run摸清后端支持到哪一步。sync会删目标端多余文件,copy不会。方向写反是不可逆的数据丢失,任何sync命令第一次跑一律先加--dry-run看清楚要删什么。
# 11. 验证:挂上之后怎么确认真的能用
# 1. 挂载点确实存在,且类型是 fuse.rclone
mount | grep webdav
findmnt /mnt/webdav
# 2. 读得到:目录能列出来,且不卡
ls -l /mnt/webdav/
# 3. 写得进:落一个测试文件
echo "rclone-check-$(date +%s)" > /mnt/webdav/.rclone-check
# 4. 从远端侧回证(不经过挂载点,直接问后端),
# 能列出来才说明数据真的到了远端,而不是只躺在本地 VFS 缓存里
rclone ls webdav:/ | grep rclone-check
# 5. 清理
rm /mnt/webdav/.rclone-check
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
托管成 systemd 服务时,再确认服务本身的状态与日志:
systemctl status rclone-webdav.service
journalctl -u rclone-webdav.service -n 30 --no-pager
2
# 12. 参考资料
# Agent 可直接解析的元数据块
{
"runbook": {
"task": "rclone-commands-and-webdav-mount",
"permalinks": ["/pages/916795/"],
"merged_from": ["/pages/c1bd32/"],
"category": "linux/monitoring",
"tags": ["rclone", "webdav", "mount", "sync"],
"rclone_versions": ["1.59+", "1.63+"],
"verified_date": "2026-09"
}
}
2
3
4
5
6
7
8
9
10
11