Syncthing 中文文档 下载 App

.stignore 通配符语法速查:星号、取反与路径锚定

模式语法一览

写法匹配示例
普通文本同名文件或目录(任意层级)foo 匹配 foo、子目录里的 foo
*零或多个字符,不跨目录分隔符te*ne 匹配 telephone,不匹配 tele/phone
**同上,但跨目录分隔符te**ne 匹配 tele/sub/phone
?单个非分隔符字符te??st 匹配 tebest
[a-z]字符区间[0-9].jpg
{a,b}逗号分隔的备选集合{banana,pineapple}
\x转义特殊字符(Windows 上用 ``,见下)\{banana\} 匹配字面 {banana}
/foo仅匹配根目录下的 foo子目录里的 foo 不受影响
!pat取反:匹配者不忽略放行被宽规则挡住的例外
// 开头注释行// temp files

两条铁律:

取反与扫描成本

! 放行放在宽规则之前。官方文档提醒:取反模式会迫使程序深入遍历被忽略的目录去找例外;而根锚定的取反(如 !/foo)没有这个代价。所以性能敏感的场景优先用根锚定写法:

!/重要目录
*

这样只有「重要目录」被扫描,其余一切忽略。

完整示例对照

官方文档给过一组经典对照(目录里有 foo、foofoo、bar2、My Pictures 等):

foo          // 忽略名为 foo 的,foofoo 不受影响
*2           // 忽略一切以 2 结尾的
qu*          // 忽略 qu 开头
!quuz        // —— 写在 qu* 之后就没用了!首条匹配生效
(?i)my pictures

顺序错了取反就失效,这是新手最容易踩的坑。

Windows 转义的特殊性

Windows 路径分隔符是反斜杠,所以 v2.0 起在 Windows 上用竖线 | 转义(如 |{banana|});或者统一在文件首行写 #escape=\ 恢复反斜杠转义——后者让同一份规则文件跨平台通用。

写完规则想验证行为,直接在界面的 Ignore Patterns 编辑器里看实时匹配提示;更系统的元数据同步边界问题见[哪些东西会被同步(04-what-syncs.md)。