我有一个要从同步中排除的文件类型列表。但是,由于其奇怪的性质,我不知道哪个标志是合适的
文件排除.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
...作品
更新:有效
最后,只要所有行都有通配符,并且正如 @petitradisgris 指出的那样,该列表--ignore-case
就可以工作
我建议
--exclude-from
在这种情况下使用该标志。它允许您提供一个文本文件,其中包含要在同步期间排除的模式列表(包括像 * 这样的通配符)。在这种情况下,使用
--exclude-regexp
或--filter-from
可能不合适,因为它们用于更复杂的过滤模式,并且对于您的特定示例来说可能不是必需的。请注意 Zone.identifier 的名称(在您的except.txt中)与您的实际文件Zone.Identifier(我是大写还是小写)。启用该
--ignore-case
标志后,rclone 将使用不区分大小写的匹配来匹配排除模式,因此“example.txt”、“EXAMPLE.TXT”和“ExAmple.TXt”都将在同步操作期间被排除。所以你的 rclone 命令看起来像:
[解决方法 2]。您可以动态修改except.txt中的错误条目,而不影响任何其他条目。然后,将其传递给--exclude-from。您还希望在匹配名称时忽略大小写。(选项--ignore-case)。
这将导致以下命令:
[解决方法 3]。--exclude -from选项确实通过匹配确切的文件名来忽略文件。尽管如此,您可以在文件名中使用通配符来允许部分名称匹配。您的目标是处理一个既处理带通配符的部分名称又处理全名的文件,就好像它们是部分名称(带通配符)一样,而不修改磁盘上的except.txt文件。值得注意的是,您还希望在匹配名称时忽略大小写。(选项--忽略大小写)
一种可能的解决方案是通过在行首附加通配符来主动修改except.txt ,但前提是它们尚不存在。然后,将此修改后的版本传递给--exclude-form参数。