![Bacula 文件集通配符:如何包含 /folder/(任意字符串)/uploads 但排除 /folder/(任意字符串)/whatever/uploads](https://linux22.com/image/784701/Bacula%20%E6%96%87%E4%BB%B6%E9%9B%86%E9%80%9A%E9%85%8D%E7%AC%A6%EF%BC%9A%E5%A6%82%E4%BD%95%E5%8C%85%E5%90%AB%20%2Ffolder%2F(%E4%BB%BB%E6%84%8F%E5%AD%97%E7%AC%A6%E4%B8%B2)%2Fuploads%20%E4%BD%86%E6%8E%92%E9%99%A4%20%2Ffolder%2F(%E4%BB%BB%E6%84%8F%E5%AD%97%E7%AC%A6%E4%B8%B2)%2Fwhatever%2Fuploads.png)
我正在为 bacula 创建一条排除规则,以便它不处理文件系统中的某些缓存和临时上传文件夹。但我无法编写它
假设这个文件系统
/filestore/user1/
/filestore/user1/uploads
/filestore/user1/user_files/uploads
/filestore/user2/uploads
/filestore/user1/user_files/
主要备份规则说
File = /filestore
并排除规则
wilddir = "/filestore/*/uploads/
但会匹配所有“uploads”文件夹。有没有简单的方法/通配符/正则表达式来仅匹配第一级上传文件夹。要清楚:
/filestore/user1/uploads #match
/filestore/user1/user_files/uploads # not match
/filestore/user2/uploads #match
答案1
最后我找到了它,你可以用正则表达式来做到这一点,但在这个特殊情况下,你必须确保与 Bacula 一起工作
regexdir = "/filestore/[^/]+/uploads"
regexdir = "/filestore/[^/]+/cache"
而不是使用只适用于通配符的 Wilddir。Bacula 文档说使用正则表达式效率较低,但在这种情况下是强制性的。
有一个非常有用的命令叫做“bregex”,它允许您测试 bacula 正则表达式引擎,而无需经过完整的调度过程。
我将编辑问题标题,以便其他可能感兴趣的人能够清楚地了解。