可以让 Unison 忽略绑定挂载或硬链接吗?

可以让 Unison 忽略绑定挂载或硬链接吗?

我正在寻找将我的主目录与 120GB USB 驱动器同步的最佳方法。问题是我使用绑定挂载(我希望被关注)和硬链接(我想要成为保存)。Rsync 可以做到这一点,但它是单向的,而我在两边都有更改。

Unison 看起来可以智能地处理双向同步,但我找不到任何选项将其限制为一个文件系统或忽略绑定挂载,文档说“Unison 无法理解硬链接“。但是,默认情况下,unison 使用 rsync 进行传输。有没有办法利用 rsync 对硬链接和绑定挂载的理解?

或者有人能给我举一个使用 rsync 和 diff 手动进行双向同步的例子吗?或者类似的东西?

注意:我以前使用过 FreeFileSync,但出了点问题,我差点丢失了我的文件和备份!这可能是我的错,但我现在害怕使用 FreeFileSync。

答案1

我怀疑,仅使用 Unison,你的问题的答案是。一般来说,很难告诉 Unison 是否同步无法通过某种方式指定的属性的文件/目录名字上的模式匹配,例如您情况下的绑定挂载或硬链接的目录。

说“默认情况下,unison 使用 rsync 进行传输”Unison 使用相同的底层算法/协议为 rsync,但使用其自己的实现;实际的rsync可执行文件未被调用,因此您无法诉诸rsync可执行文件的功能,并且您无法通过这种方式解决问题。虽然如果rsync可以做到,那么我想 Unison可以如果有人要编写该功能,就这样做。

正如你所指出的,Unison 不支持硬链接,我认为你运气不好。不过,你也许可以使用外部程序巧妙地忽略绑定挂载。你可以使用 findmnt列出绑定挂载的目录,然后ignore = Path /path/to/bind/mount在您的Unison 简介对于每个绑定挂载。

此外,由于您似乎正在考虑使用脚本或其他方式手动执行此操作,因此您应该注意inotify 工具

答案2

您可以通过使用绑定挂载简单地向 Unison 提供没有挂载点的目录视图来忽略绑定挂载。请注意挂载传播,如果启用(Systemd 默认),它将在绑定挂载之间传播挂载。

相关内容