Syncthing项目中的.stignore文件详解:文件同步排除规则指南

Syncthing项目中的.stignore文件详解:文件同步排除规则指南

syncthing Open Source Continuous File Synchronization syncthing 项目地址: https://gitcode.com/gh_mirrors/sy/syncthing

什么是.stignore文件

在Syncthing文件同步工具中,.stignore文件是一个强大的配置文件,用于控制哪些文件或目录不应该被同步到其他设备。这个文件类似于Git中的.gitignore文件,但专为Syncthing设计。

文件基本规范

  1. 文件位置:必须放在同步文件夹的根目录下
  2. 文件命名:必须命名为.stignore
  3. 编码格式:必须使用UTF-8编码
  4. 同步特性.stignore文件本身不会被同步到其他设备

模式匹配规则详解

基础匹配规则

  • 直接匹配filename会匹配所有名为"filename"的文件或目录
  • 星号(*):匹配任意数量字符(不包括路径分隔符)
    • 示例:*.tmp匹配所有.tmp后缀文件
  • 双星号()**:匹配任意数量字符(包括路径分隔符)
    • 示例:**/temp匹配所有层级目录下的temp目录
  • 问号(?):匹配单个非路径分隔符字符
    • 示例:file?.txt匹配file1.txt但不匹配file10.txt

高级匹配规则

  • 字符范围:使用[]指定字符范围
    • 示例:[a-z]匹配任意小写字母
  • 多选模式:使用{}指定多个选项
    • 示例:{*.jpg,*.png}匹配所有jpg和png文件
  • 根目录匹配:以/开头的模式只匹配根目录
    • 示例:/config只匹配根目录下的config文件

特殊前缀

  1. 排除模式(!)!pattern表示包含匹配的文件

    • 示例:*.tmp后跟!important.tmp会排除所有.tmp文件但保留important.tmp
  2. 大小写不敏感(?i)(?i)pattern使匹配不区分大小写

    • 示例:(?i)readme匹配README、readme等
  3. 可删除标记(?d)(?d)pattern标记的文件可被删除以允许目录删除

    • 适用于系统生成的临时文件
  4. 注释:以//开头的行是注释

包含其他文件

使用#include指令可以包含其他文件中的规则:

#include more-rules.txt

注意:包含文件的路径是相对于.stignore文件所在目录的。

实际应用示例

常见使用场景

  1. 排除系统文件

    (?d).DS_Store
    (?d)Thumbs.db
    (?d)desktop.ini
    
  2. 排除特定目录

    /node_modules
    /build
    /dist
    
  3. 排除特定类型文件但保留部分

    *.log
    !error.log
    

综合示例

假设有以下目录结构:

project/
  .git/
  build/
  dist/
  src/
  config.json
  README.md
  temp/

对应的.stignore文件:

// 排除版本控制目录
.git/

// 排除构建产物
build/
dist/

// 排除临时文件但保留重要的
temp/*
!temp/important

// 排除日志文件但保留错误日志
*.log
!error.log

// 允许删除系统生成的文件
(?d).DS_Store
(?d)Thumbs.db

注意事项

  1. 匹配顺序:第一个匹配的规则决定文件是否被忽略
  2. 目录处理:以/结尾的模式只匹配目录内容,不匹配目录本身
  3. 性能考虑:复杂的排除规则可能影响扫描性能
  4. Windows限制:Windows下无法使用反斜杠转义特殊字符

最佳实践建议

  1. .stignore文件纳入版本控制(如Git)
  2. 为不同项目类型创建模板(如前端项目、后端项目等)
  3. 定期审查.stignore规则,移除不再需要的排除项
  4. 在团队中共享一致的.stignore配置

通过合理使用.stignore文件,可以显著提高Syncthing的同步效率和存储空间利用率,同时保护敏感数据不被意外同步。

syncthing Open Source Continuous File Synchronization syncthing 项目地址: https://gitcode.com/gh_mirrors/sy/syncthing

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞿格女

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值