自建同步服务syncthing的忽略模式语法

Syncthing是一款开源的文件同步程序,如果有一个VPS就可以将自己本地文件夹与服务器同步。Syncthing可以选择通过全球服务器节点连接至自己的服务器,也可以本地直接与自己的服务器连接(前提是自己的服务器有公网IP),当然这些都是废话,百度就有一堆,今天说的是Syncthing同步文件夹时怎样忽略文件,就是不上传自己不想上传的文件。

其实主要就是翻译Syncthing的文档,地址在这https://docs.syncthing.net/users/ignoring.html

1.忽略模式的配置文件

如果某些文件不应与其他设备同步,则可以创建一个名为.stignore的文件,其中包含要忽略的文件模式。.stignore文件必须放在文件夹的根目录中。.stignore文件本身永远不会同步到其他设备,但可以使用 #include 来包含在设备之间同步的文件。所有模式语法都从文件夹根目录开始生效。生效是以根目录为基准的。

文件虽然被忽略,但文件夹也不会被删除。如果需要删除文件夹,使用(?d)

2.匹配模式

1 .stignore文件包含文件或路径模式的列表。匹配语法从上至下生效。

2 一般文件名与自身匹配,即语句foo匹配文件 foosubdir/foo以及任何名为 foo 的目录。空格被视为常规字符。即一般语句与文件名、文件夹名匹配,并且从根目录起逐级匹配。

3 星号 * 匹配文件名中的零个或多个字符,但与目录分隔符不匹配。te*st 匹配 testsubdir/telerest 但不匹配 tele/rest

4 双星号 ** 匹配如上,但也包含目录分隔符。te**st 匹配 test、subdir/teleresttele/sub/dir/rest

5 问号 ?匹配单个字符,但不匹配目录分隔符。如  te??st  匹配 tebest 但不是  teb/sttest

6 括在方括号 [] 中的字符被解释为字符范围[a-z]。在使用此语法之前,您应该对正则表达式字符类有基本的了解。

7 目录分隔符 / 表示仅在当前目录中匹配。/foo 匹配 foo 但不匹配 subdir/foo

8 以#include开头的语句会从指定文件加载匹配模式。文件不存在或被包含多次是错误的。请注意,虽然这可以用于包含子目录中文件的模式,但模式本身仍然相对于文件夹根目录。示例:#include more-patterns.txt

9 一个以!开头的 匹配语句表示否定 :上传包含匹配文件(即不被忽略)。这可以用于覆盖后面的更一般的模式。

10 以 (?i) 前缀开头的模式允许不区分大小写的匹配。(?i)test 匹配 testTESTtEsT。 (?i) 前缀可以与其他模式组合,例如语句

   (?i)!picture*.png 表示Picture1.PNG应该同步。在Mac OS和Windows上,模式始终不区分大小写。

11 以 (?d) 为前缀开头的语句表示可以删除这些文件,如果它们阻止了目录删除。任何操作系统生成的文件都应该使用此前缀,应该将其删除。

12 以//开头的行是注释,没有任何效果。

13 Windows不支持转义\ [foo  -  bar \]。

14 前缀可以按任何顺序排列(例如“ (?i)(?d) ”),但不能在一对括号中(不是“ (?di) ”)。

3 例子

 给定目录结构

.DS_Store
foo
foofoo
bar/
    baz
    quux
    quuz
bar2/
    baz
    frobble
My Pictures/
    Img15.PNG

.stignore文件的内容

(?d).DS_Store
!frobble
!quuz
foo
*2
qu*
(?i)my pictures

解析:

.DS_Store            # 忽略,如果妨碍父目录删除,将被删除
foo                  # 同步,不匹配“foo”但匹配“foo*” 或 “*foo”
foofoo               # 同步,不匹配“foo”但匹配“foo*” 或 “*foo”
bar/                 # 同步
    baz              # 同步
    quux             # 忽略,匹配“qu*”
    quuz             # 同步,匹配“qu*” 但被前面的“!quiz”排除
bar2/                # 同步,虽然匹配 “*2” 但子目录文件同步了
    baz              # 忽略,由于父目录被忽略
    frobble          # 同步,“frobble” 按从上到下顺序生效
My Pictures/         # 忽略,匹配最后一条
    Img15.PNG        # 忽略,由于父目录被忽略

猜你喜欢

转载自blog.csdn.net/mingyizhan/article/details/92806121