精确控制同步内容:OneDrive Client for Linux客户端过滤规则(skip_file/skip_dir)实战
2026/8/23 16:00:44 网站建设 项目流程

精确控制同步内容:OneDrive Client for Linux客户端过滤规则(skip_file/skip_dir)实战

【免费下载链接】onedriveOneDrive Client for Linux项目地址: https://gitcode.com/gh_mirrors/onedri/onedrive

OneDrive Client for Linux 是一款面向 Linux 系统的开源 OneDrive 同步客户端,而skip_fileskip_dir过滤规则正是它实现"精确控制同步内容"的核心能力。无论是阻止临时文件上传云端,还是把大型目录排除在同步范围之外,都可以通过这两个配置项完成。本文带你从配置文件入手,快速掌握 OneDrive 同步过滤规则的写法、匹配逻辑与常见坑点。

过滤规则在 OneDrive 同步中的位置

OneDrive Client for Linux 默认会把本地sync_dir目录与云端 OneDrive 完整双向同步。当你不希望某些内容参与同步时,可以启用**客户端侧过滤(Client Side Filtering)**规则——所有规则都在本机匹配,只有未被规则命中的文件才会参与上传/下载。

整体同步活动流如下图所示,可以看到过滤检查贯穿于本地扫描与云端对账的每个环节:

过滤规则的检查顺序(重要)

一个常见疑问是:多个过滤配置同时存在时,谁先谁后?客户端按固定顺序逐级检查本地路径,任意一级命中即跳过该项

检查顺序依次为:

  1. .nosync标记文件(需开启check_nosync
  2. skip_dotfiles(跳过所有点文件/点目录)
  3. skip_symlinks(跳过符号链接)
  4. skip_dir(跳过目录)
  5. skip_file(跳过文件)
  6. sync_list(白名单式选择性同步)
  7. skip_size(跳过超大文件)

理解这个顺序后,你就不必担心规则之间"打架"——它们是逐层叠加的。

skip_file 实战:让指定文件不参与同步

skip_file用于排除特定文件。它内置了一组默认规则(编辑器的临时文件、Vim 交换文件、浏览器半程下载文件等):

~*|.~*|*.tmp|*.swp|*.partial

⚠️关键陷阱:如果你在配置文件中自定义skip_file,会整体覆盖上述默认值。强烈建议把自己的规则追加在默认规则之后,例如:

skip_file = "~*|.~*|*.tmp|*.swp|*.partial|*.bak|never_sync.file"

匹配语法要点:

  • 📁 路径均相对于sync_dir(默认~/OneDrive
  • *?通配符受支持,匹配不区分大小写
  • |分隔多条规则
  • *.txt表示跳过任意位置的 txt 文件
  • /Documents/keepass.kdbx(带前导/)表示只跳过sync_dir根下的精确路径

该选项在配置文件中可以写多行,效果与用|拼接等价,方便按类别分组维护:

skip_file = "~*|.~*|*.tmp|*.swp|*.partial" # 保留默认 skip_file = "*.blah" # 自定义规则 skip_file = "/Documents/keepass.kdbx"

更完整的参数说明见 application-config-options.md。

skip_dir 实战:排除整个目录

skip_dir用于排除整个目录(连同其下所有内容)。它支持两种写法:

写法含义示例
单条目(无前导/匹配任意层级中名为该名称的目录Desktop
完整路径(前导/仅跳过sync_dir根下的精确路径/Documents/Visual Studio*

示例配置:

skip_dir = "Desktop|Documents/IISExpress|Documents/Visual Studio*|cache"

还有一个进阶选项skip_dir_strict_match:设为"true"后,skip_dir条目必须是完整路径才生效,适合你只想排除特定位置、而不想"同名全杀"的场景:

skip_dir = "/Projects/work" skip_dir_strict_match = "true"

参数文档详见 application-config-options.md。

常用组合搭配:点文件、符号链接与 .nosync

除了主角之外,还有几个"辅助过滤"值得了解:

  • skip_dotfiles = "true":一键跳过.config.git等点文件/点目录
  • skip_symlinks = "true":跳过指向同步目录之外的符号链接
  • skip_size = "50":跳过大于 50MB 的文件(单位 MB)
  • check_nosync = "true"+.nosync空文件:在任意本地目录放一个.nosync文件即可临时排除该目录,改主意时删掉文件即可,比改配置更灵活

本地新文件参与同步前,客户端会先做过滤判定,处理流程如下图所示(图中"checkPathAgainstClientSideFiltering"节点即上一节的检查顺序):

验证与生效:修改规则后必须 resync

这是新手最容易踩的坑:修改skip_file/skip_dir后,不会立即自动生效,需要执行一次--resync重新同步。推荐"先验证、后生效"三步走:

  1. 看配置onedrive --display-config确认规则被正确读取
  2. 干跑测试onedrive --sync --dry-run预演一遍,观察哪些文件被"Skipping item"跳过
  3. 正式生效onedrive --sync --resync让新规则生效

💡 也可以在命令行用--skip-file/--skip-dir临时传参,但注意:CLI 传参会替换配置文件中的条目,而非追加。

resync 的注意事项详见 application-config-options.md。

常见问题 FAQ

Q:skip_dir 会删除云端已同步的目录吗?不会。规则只影响"是否继续同步",已同步的云端数据保留在 OneDrive 上,只是本地不再跟进它的变更。

Q:只想同步少数目录,而不是排除少数目录,怎么办?使用白名单机制sync_list文件(放在~/.config/onedrive/),默认排除一切、只同步你列出的路径,适合"选择性同步"场景,文档见 usage.md。

Q:临时文件到底跳没跳过?--dry-run跑一次,日志中出现Skipping item - excluded by skip_file之类的字样即表示命中。过滤逻辑的源码实现位于 clientSideFiltering.d,架构原理可参考 client-architecture.md。

小结

配置项作用典型用途
skip_file按通配/路径跳过文件排除*.bak、编辑器临时文件
skip_dir跳过目录排除node_modules、缓存目录
skip_dotfiles/skip_symlinks按类型跳过点文件、符号链接
skip_size按大小跳过超大视频、镜像文件
.nosync目录级临时开关临时排除某个目录
sync_list白名单式选择性同步只同步指定目录

掌握skip_fileskip_dir的写法,配合--dry-run验证和--resync生效,你就能让 OneDrive Client for Linux 只同步真正需要的内容——既省空间,又不误传临时文件。

【免费下载链接】onedriveOneDrive Client for Linux项目地址: https://gitcode.com/gh_mirrors/onedri/onedrive

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询