我有一个要从同步中排除的文件类型列表。但由于其性质奇怪,我不知道哪个标志合适
文件排除.txt
encryptable
Zone.identifier
.fuse_hidden*
goutputstream*
.spotlight-*
.fseventsd*
.ds_store*
~lock.*
Thumbs.db
attributes
命令:
rclone sync upload_local gdrive:upload --verbose --update --modify-window 1h --no-update-modtime --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s --stats-file-name-length 0 --exclude-from exclude.txt --log-file=rclone.log
或者你应该使用:“--exclude-regexp”或“--filter-from”
PD:但是有一些事情非常奇怪。
它--exclude-from exclude.txt
不起作用
它--filter-from exclude.txt
不起作用(在行首放置“-”
与--exclude *Zone.Identifier
...它不起作用
与--exclude *.fuse_hidden
...作品
与--exclude *Zone.identifier* --exclude *.fuse_hidden* --ignore-case
...作品
更新:有效
最后,只要所有行都有通配符,该列表就可以工作,正如@petitaradisgris 指出的那样,--ignore-case
缺少
答案1
在这种情况下,我建议使用该--exclude-from
标志。它允许您提供一个文本文件,其中包含同步期间要排除的模式列表(包括像 * 这样的通配符)。
在这种情况下使用--exclude-regexp
或--filter-from
可能不合适,因为它们用于更复杂的过滤模式,并且对于您的特定示例可能不是必需的。
注意 Zone.identifier 的名称(在你的排除.txt)VS你的实际文件区域标识符(我是大写字母 vs. 小写字母)。启用该--ignore-case
标志后,rclone 将使用不区分大小写的匹配来匹配排除模式,因此“example.txt”、“EXAMPLE.TXT”和“ExAmple.TXt”都将在同步操作期间被排除。
因此你的 rclone 命令看起来像:
rclone sync upload_local gdrive:upload --verbose --update --modify-window 1h --no-update-modtime --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s --stats-file-name-length 0 --exclude-from exclude.txt --ignore-case --log-file=rclone.log
[解决方法 2]。您可以动态修改排除.txt,而不会影响任何其他条目。然后,将其传递给--排除。您还希望在匹配名称时忽略大小写。(选项--忽略大小写)。
这将产生以下命令:
rclone sync upload_local gdrive:upload --verbose --update --modify-window 1h --no-update-modtime --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s --stats-file-name-length 0 --exclude-from <(cat exclude.txt | sed 's/Zone.identifier/*Zone.Identifier*/') --ignore-case --log-file=rclone.log
[解决方法 3]。 这--排除选项确实会忽略文件,而是通过匹配它们的确切文件名。不过,您可以在文件名中使用通配符来允许部分名称匹配。您的目标是处理一个文件,该文件既可以处理带有通配符的部分名称,也可以处理完整名称,就好像它们是部分名称(带有通配符),而无需修改排除.txt磁盘上的文件。需要注意的是,在匹配名称时,您还需要忽略大小写。(选项--忽略大小写)
一个可能的解决方案是修改排除.txt通过在行首添加通配符来主动执行此操作,但前提是通配符尚未存在。之后,将此修改后的版本传递给--排除表格范围。
rclone sync upload_local gdrive:upload --verbose --update --modify-window 1h --no-update-modtime --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s --stats-file-name-length 0 --exclude-from <(cat exclude.txt | sed '/^\*/! s/^/*/g' ) --ignore-case --log-file=rclone.log