我有一个目录~/x7/music/sfx
~/x7/music
的根目录中有一些文件和文件夹
我只需要同步sfx
文件夹并忽略music
中的任何其他内容。
我尝试了很多变种,但都错了。
ignore = Name music/*
ignorenot = Regex music/sfx/.* (OR just *)
不起作用。
我期待使用像
这样的东西ignore = Name music/*^/
答案 0 :(得分:1)
我不熟悉unison,但要忽略除sfx之外的所有事情,你可以使用
ignore = Regex /root/path/to/music/.*
ignorenot Regex /root/path/to/music/sfx/.*
还有一个
ignorenot
首选项,它指定了一组 路径的模式,即使它们匹配,也不应忽略 忽略模式。但是,这两组模式的相互作用 可能有点棘手。以下是它的工作原理:
Unison开始从副本的根目录检测更新,即从空路径开始。如果空路径与
ignore
模式匹配,则 与ignorenot
模式不匹配,那么整个副本将是 忽略。 (因此,包含Name *
不是一个好主意 作为ignore
模式。如果你想忽略除了a之外的所有东西 某些文件集,请使用Name ?*.
)如果root是目录,Unison将继续在根目录的所有直接子节点中查找更新。再说一次,如果名字的话 子项匹配
ignore
模式且与ignorenot
不匹配 模式,然后这整个路径包括它下面的一切 忽略。如果任何未被忽略的子项是目录,则该过程将以递归方式继续。
答案 1 :(得分:1)
遵循unison的文档,如果某个路径被忽略,那么其后的所有内容。因此,如果要忽略文件夹中除子文件夹之外的所有内容,则不应忽略文件夹本身,而应忽略其中的所有内容(不同),然后使用ignorenot
。
ignore = Path x7/music/?*
ignore = Path x7/music/.?*
ignorenot = Path x7/music/sfx
应该这样做。
关于那里使用的特定正则表达式,我再次遵循unison的文档建议:"因此,将Name *
作为忽略包含在内并不是一个好主意图案。如果要忽略除特定文件集之外的所有内容,请使用Name ?*
。"
第二条ignore
行也会忽略music
中隐藏的文件/文件夹,如果您需要的话。
答案 2 :(得分:0)
在2.48.3上,这应该起作用:
ignore = Path /root/path/to/music/*
ignorenot = Path /root/path/to/music/sfx