3.2.6.1.1. 忽略文件
如果有些文件不想与其他设备同步,则可以将其添加到忽略文件列表里,忽略文件存储在每个任务目录下的
.verysync/IgnoreList中,每行一个规则。 可以直接用普通文本编辑器修改该文件,也可以在界面目录选项里的忽略列表编辑器中进行修改。
忽略文件的修改仅在本机生效,并不会同步到其它设备上。
提示:
- 被忽略文件列表规则匹配到的文件将不扫描,不索引,不接收。
- 如果目录中包含忽略的文件,这将会阻止目录被删除,可以在规则前面添加(?d)标识,以允许删除。
3.2.6.1.2. 快速入门例子
由于完整的规则描述对于普通用户接受起来有一定的门槛,这一小节以最常见的例子来入门
- 忽略所有
.log后缀的文件往规则列表最后写入*.log - 忽略名为
work的目录或文件,规则如下work - 忽略 同步目录最上级的
.git目录/.git 忽略所有mp3和mp4文件 规则如下
*.mp3 *.mp4只同步或接收
.png文件!*.png *
其余的类似,相信简单的忽略规则你已入学会。
3.2.6.1.3. 修饰符
(?i) 表示该规则忽略大小写
(?d) 表示被忽略的文件当上级目录删除时,允许被删除
3.2.6.1.3.1. 忽略规则语法说明
忽略文件列表包含文件或路径模式列表。 第一个匹配的模式将决定给定文件的处理方式。
规则的编写规则类似于正则表达式。但进行了简化。
普通文件名匹配规则,如规则foo, 将匹配名为foo的文件或目录,包括任意级别的子目录或文件。 空格被视为普通字符。
* 星号匹配文件名中的零个或多个字符,但不匹配目录分隔符。 规则te*st,匹配test,subdir/telerest, 但不匹配tele/rest。
** 双星号匹配如上,但也匹配目录分格符。 规则te**st,匹配test,subdir/telerest, 也匹配tele/rest, 和tele/sub/dir/rest。
? 问号匹配不是目录分隔符的单个字符。 te??st匹配tebest但不匹配teb/st或test。
[] 方括号[]中的字符被解释为字符范围[a-z]。 在使用此语法之前,您应该对正则表达式字符类有基本的了解。
/ 以目录分隔符/开头的模式,仅在当前目录中进行匹配。 / foo匹配foo但不匹配subdir/foo。
#include 以#include开头的模式会从指定文件加载模式。 文件不存在或包含多次是错误的。 请注意,被包函的文件可以存在于任何子目录中, 但规则描述方式,仍然是相对于文件夹根目录的。示例:#include myignore.txt。
! 以!开头的模式表示为否定模式:包含匹配文件(即不被忽略)。
(?i) 以 (?i) 前缀开头的模式表示该模式不区分大小写进行匹配。 如(?i)test将匹配TEST,tEst。 (?i)前缀可以与其他模式组合,例如(?i)!picture*.png表示Picture1.PNG应该同步。 在Mac OS和Windows上,模式始终不区分大小写。
(?d) 以(?d)前缀开头的模式允许删除这些文件,一般用于描述操作系统生成的临时文件,因为这些文件一般我们不希望它影响目录删除如群晖系统上(?d)@eadir.
// 以//开头的模式为注释语法, 不会应用于文件匹配上。
可以按任何顺序指定前缀(例如
(?d)(?i)),但不能在一对括号中同时指定多个模式如((?di))
3.2.6.1.3.2. 规则例子
假如目录结构如下
.DS_Store
foo
foofoo
bar/
baz
quux
quuz
bar2/
baz
frobble
My Pictures/
Img15.PNG
我们的忽略规则如下
(?d).DS_Store
!frobble
!quuz
foo
*2
qu*
(?i)my pictures
所有名为foo的文件和目录,以2结尾或以qu开头都将被忽略。 最终结果变为:
.DS_Store # 忽略, 该规则会阻止父目录删除。
foo # 忽略, 匹配规则foo
foofoo # 同步, 不匹配规则 "foo",如果有规则*foo或者foo*会匹配
bar/ # 同步
baz # 同步
quux # 忽略, 匹配规则 "qu*"
quuz # 同步, 匹配规则 "qu*" 但前面已定义"!quuz"
bar2/ # 忽略, 匹配规则 "*2"
baz # 忽略,父目录匹配*2规则, 父目录忽略 所以忽略
frobble # 忽略,父目录忽略 "!frobble" 不能起到作用。
My Pictures/ # 忽略,匹配不区分大小写规则
(?i)"my pictures"
Img15.PNG # 忽略,父目录已忽略