我有一些设备,并且正在考虑让它们与和声保持同步。
这些设备并不是一直在运行,而是每天关闭几个小时,而不一定是同时运行。所有这些设备都没有一天24小时运行。因此,我需要真正的点对点,例如,查看更改(标记为*)如何从A传播到B、C、D,即使在所有同步过程中都没有运行:
A-on* B-on C-off D-off
A-on* B-on* C-off D-off
A-off* B-on* C-off D-off
A-off* B-on* C-on D-off
A-off* B-on* C-on* D-off
A-off* B-off* C-on* D-off
A-off* B-off* C-on* D-on
A-off* B-off* C-on* D-on*不幸的是,Unison 用户手册建议为2台以上的机器建立星型拓扑:
使用Unison同步两台以上的机器, Unison是为同步多对副本而设计的。但是,可以通过执行多个成对同步来使用它来保持较大的机器组同步。如果您需要这样做,最可靠的设置方法是将机器组织成一个“星型拓扑”,其中一台机器被指定为“集线器”,其余的机器被指定为“辐条”,并且每台轮辐机器只与集线器同步。星型拓扑的最大优点是消除了混淆“虚假冲突”的可能性,这是因为Unison为其同步的每一对主机维护了单独的存档。
尽管如此,有什么方法可以实现真正的点对点吗?
发布于 2014-04-18 09:04:13
我总是在星型拓扑中使用Unison来同步我的四台机器。原因是它不是一个版本控制文件系统(例如git ),而是一个同步工具。
如果您确实选择了分布式拓扑(您必须为每个设备创建一个配置文件并同步所有配置文件来设置该拓扑),那么无疑您将完成大量的手动冲突解决,这将是非常严峻的。这种情况肯定会发生,除非您一次只对系统上的文件和一个设备上的文件进行极其基本的更改。
因此,建议:
发布于 2014-04-19 00:41:35
同一性本质上是对等的。这正是推荐使用星型拓扑的原因:这个工具没有任何中央服务器的概念,所以应该由用户来执行。
当然,您可以以对等的方式使用Unison,但是没有奇迹:对于每一对机器(A,B),您需要选择一台机器(比如A)并创建一个配置文件来与B同步,所以如果您有n台机器,您将需要n*(n-1)/2配置文件。
除了需要大量的配置文件之外,您可能最终会遇到冲突的更改。这是您的需求中的一个固有问题。特别是,您的网络可能被分割:如果以D1 = D2≠D3 = D4结束,则在{D1、D2}和{D3、D4}之间存在冲突;如果通过将D1与D3同步来协调冲突,您将得到一个D1和D3的新版本,以及D2和D4上的不同旧版本:混乱趋于蔓延。
如果您真的想要进行纯粹的点对点,我建议您使用一个维护历史并擅长合并的工具,比如git。即使在那里,星型拓扑(即中央存储库)也是最好的,因为它提供了一个拥有权威最新版本的位置。但是,如果您没有一个中央存储库,并且因此您的历史记录容易产生冲突,那么至少git将为您提供更好的工具来记录合并历史,以便您能够看到哪些部分是相互冲突的(这在解决冲突时非常有用)。
https://unix.stackexchange.com/questions/125339
复制相似问题