尝试在两台 Ubuntu 12.04 LTS 台式计算机上安装 Unison 版本 2.40.65。主计算机是 System76。辅助计算机是 2012 年末的 Apple mini mac,不再安装 OS X。两台计算机都安装了 ext4 文件系统。
我决定在使用 Unison 进行关键同步之前先测试一下,因为我之前使用过 Windows 到 Windows 同步程序,但效果并不好(速度慢、不稳定,如果网络断线就只能等老天爷了)。我用 Unison 测试了所有这些缺点,结果它以很大的优势通过了。
我在使用 Unison 时遇到了一个重大问题ignore = Path
。我使用 GUI 并编辑配置文件设置了忽略。当文件夹或文件添加到路径中的最后一个文件夹中时,Unison 会将新内容添加到添加它的对面的计算机。因此,ignore
根据Unison 文档:
忽略 xxx
包括首选项 -ignore pathspec 会导致 Unison 完全忽略与 pathspec 匹配的路径(以及它们的子路径)。这对于避免同步临时文件、目标文件等很有用。pathspec 的语法在路径规范部分中描述,有关忽略路径的更多详细信息可在忽略路径部分中找到。
我在测试中看到的是“(以及他们的孩子)”。我希望这ignore = Path
意味着无论如何都会忽略该路径上的每一个变化。
以下是我的工作测试一致配置文件的副本:
label = test2
root = /home/butest/Documents
root = ssh://[email protected]//home/butest/Documents
sshargs = -C
ignore = Path Documents/4_Significant_Events/*
以下是我尝试过但没有成功的组合列表ignore = Path
。它们要么抛出异常,要么具有与上述相同的行为。
ignore = Path home/butest/Document/4_Significant_Events
ignore = Path /home/butest/Document/4_Significant_Events
ignore = Path //home/butest/Document/4_Significant_Events/
ignore = Path {home/butest/Document/4_Significant_Events}
ignore = Path {/home/butest/Document/4_Significant_Events}
ignore = Path {//home/butest/Document/4_Significant_Events/}
ignore = Path home/butest/Document/4_Significant_Events*
ignore = Path /home/butest/Document/4_Significant_Events*
ignore = Path //home/butest/Document/4_Significant_Events*/
ignore = Path {home/butest/Document/4_Significant_Events*}
ignore = Path {/home/butest/Document/4_Significant_Events*}
ignore = Path {//home/butest/Document/4_Significant_Events/*}
ignore = Path home/butest/Document/4_Significant_Events[*]
ignore = Path /home/butest/Document/4_Significant_Events[*]
ignore = Path //home/butest/Document/4_Significant_Events/[*]
ignore = Path {home/butest/Document/4_Significant_Events[*]}
ignore = Path {/home/butest/Document/4_Significant_Events[*]}
ignore = Path {//home/butest/Document/4_Significant_Events/[*]}
此外,我希望两台电脑上的时间戳保持一致。但我不知道该如何强制执行。与另一个问题相比,这个问题并不大。
答案1
让我们看看:ignore
路径是相对的。因此,您检查的所有其他示例都是非法的。
在此代码中:
label = test2
root = /home/butest/Documents
root = ssh://[email protected]//home/butest/Documents
sshargs = -C
ignore = Path Documents/4_Significant_Events/*
你告诉 Unison 忽略根目录下所有符合描述的路径,也就是说,
/home/butest/Documents/Documents/4_Significant_Events/*
我怀疑这不是你想要的。如果你想要/home/butest/Documents/4_Significant_Events/
忽略你的目录(和子目录),只需将最后一行更改为
ignore = Path {4_Significant_Events}
关于时间戳的事情,我不明白。您是在寻找times = true
同步时间戳的选项吗?
答案2
ignore = Path {4_Significant_Events}
效果很好。{} 类似于 C 中的范围吗?因此,上面这一行可以表述为:unison 忽略 4_Significant_Events 范围内的所有内容。
times = true
正是我需要的,我在 GUI 中寻找它作为“时间戳”工作完美。