文档:资料
文件类型过滤
比如 --exclude "*.bak"
,表示排除所有 .bak
结尾的文件,也可以写作 --filter "- *.bak"
比如 --include "*.{png,jpg}"
,包含所有 png
和 jpg
文件,排除其他文件,也可以写作 --filter "+ *.{png,jpg}"
--delete-excluded
删除排除的文件。需配合过滤参数使用,否则无效。
目录过滤
目录过滤需要在目录名称后面加上 /
,否则会被当做文件进行匹配。以 /
开头只会匹配根目录(指定目录下),否则匹配所目录。这同样适用于文件。
--exclude ".git/"
排除所有目录下的.git
目录。
--exclude "/.git/"
只排除根目录下的.git
目录。
--exclude "{Video,Software}/"
排除所有目录下的 Video
和 Software
目录。
--exclude "/{Video,Software}/"
只排除根目录下的 Video
和 Software
目录。
--include "/{Video,Software}/**"
仅包含根目录下的 Video
和 Software
目录的所有内容。
大小过滤
默认大小单位为 kBytes
,但可以使用 k
,M
或 G
后缀。
--min-size
过滤小于指定大小的文件。比如 --min-size 50
表示不会传输小于 50k 的文件。
--max-size
过滤大于指定大小的文件。比如 --max-size 1G
表示不会传输大于 1G 的文件。
过滤规则来自某个文件
--exclude-from <规则文件>
:从文件添加包含规则
--include-from <规则文件>
:从文件添加删除规则
--filter-from <规则文件>
:从文件添加包含 / 排除规则。比如 --filter-from filter-file.txt
。
filter-file.txt
示例:
- secret*.jpg
+ *.jpg
+ *.png
+ file2.avi
- /dir/Trash/**
+ /dir/**
- *
最佳实践
rclone sync D:\blog oss:tvcdn\blog -u -v -P --transfers=20 --ignore-errors --buffer-size=128M --check-first --checkers=10 --drive-acknowledge-abuse --exclude "/{.git,public,resources}/" --exclude "*.mp4"
这段代码的意思是:
序号 | 操作 | 命令 |
---|---|---|
1 | 同步本地文件夹 D:\blog 到远程 oss:tvcdn\blog | rclone sync D:\blog oss:tvcdn\blog |
2 | 忽略已存在文件(此参数慎重) | --ignore-existing |
3 | 仅更新新文件 | -u |
4 | 显示详细进度 | -v -P |
5 | 并发传输数量为 20 | --transfers=20 |
6 | 忽略错误 | --ignore-errors |
7 | 缓冲大小为 128M | --buffer-size=128M |
8 | 在首次同步前检查文件列表 | --check-first |
9 | 使用 10 个检查线程 | --checkers=10 |
10 | 启用 Google Drive 滥用确认 | --drive-acknowledge-abuse |
11 | 排除 .git 、public 和 resources 文件夹 | --exclude "/{.git,public,resources}/" |
12 | 排除所有 *.mp4 文件 | --exclude "*.mp4" |