Ubuntu unison:如何同步多个目录中的特定子文件夹?

Ubuntu unison:如何同步多个目录中的特定子文件夹?,ubuntu,unison,Ubuntu,Unison,我正试图用unison(版本2.48.3)在两台机器(都是ubuntu 16.04)之间同步我的目录子集。在这两台机器上,我都有一个名为“research”的目录。它包含我正在处理的每个项目的文件夹。在每个文件夹中,都有一个名为“lit”的文件夹,我希望将所有这些“lit”文件夹与unison同步,而不必真正关心项目名称本身。 示例:在两台计算机上,都有以下文件夹: /home/chris/research/projA/lit /home/chris/research/projA/otherst

我正试图用unison(版本2.48.3)在两台机器(都是ubuntu 16.04)之间同步我的目录子集。在这两台机器上,我都有一个名为“research”的目录。它包含我正在处理的每个项目的文件夹。在每个文件夹中,都有一个名为“lit”的文件夹,我希望将所有这些“lit”文件夹与unison同步,而不必真正关心项目名称本身。 示例:在两台计算机上,都有以下文件夹:

/home/chris/research/projA/lit
/home/chris/research/projA/otherstuff
/home/chris/research/projB/lit
/home/chris/research/projB/otherstuff
其中我想跨两台机器同步
projA/lit
,也要同步
projB/lit

我已经安装了unison,并通过手册阅读了我自己。基于此,我修改了unison配置文件default.prf,如下所示:

# Unison preferences file
# used for syncing lit between work and home

# roots
root = /home/chris/research
root = ssh://pc-work//home/chris/research

# paths
path = */lit
虽然unison成功连接到我的工作计算机,但它找不到任何要同步的内容。 相反,如果我将上面的配置文件中的
path=*/lit
替换为
path=projA/lit
,则它可以工作


因此,问题是:我是否可以让unison为所有项目同步
lit
子文件夹,而不必指定这些子文件夹,如果是,如何同步?或者我必须将unison命令包装在某种循环中才能遍历所有项目文件夹吗?

path
不是实现所需的正确方法。从
路径上的

请注意,
path
首选项是按字面解释的,它们不是正则表达式

即使您使用的不是正则表达式,而是shell glob,我认为上面的意思是
path
的值不是由
unison
专门解释的

不过,通过明智地使用
ignore
和/或
ignorenot
,您可以达到您想要的效果。它们确实允许shell glob或正则表达式

例如,(免责声明:我还没有测试过这个)

用于同步时要跳过的任何目录。如果要跳过的目录多于要同步的目录,也可以用另一种方式指定:

ignore = Path proj*/*
ignorenot = Path proj*/lit
请注意,如果要同步的文件和目录已直接位于指定的
根目录下,则无需设置
路径

ignore = Path proj*/*
ignorenot = Path proj*/lit