Unison 失败?忽略路径和时间戳

Unison 失败?忽略路径和时间戳

尝试在两台 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 中寻找它作为“时间戳”工作完美。

相关内容