如何在两个远程 Linux 虚拟机上同步两个文件夹

如何在两个远程 Linux 虚拟机上同步两个文件夹

我有两台虚拟机,主机操作系统是 ESXi 3.5,客户操作系统是 Centos 4.6。远程有两个 ESXi 服务器,每个服务器都包含一个 Centos 4.6 虚拟机。我希望,无论我在一台虚拟机中对任何文件/文件夹所做的更改,都应该自动同步到另一台远程虚拟机上。同步过程应该是自动的。它应该只同步差异,而不是模拟使用覆盖操作的整个副本。同步应该足够智能,可以查找已更改的内容和未更改的内容,并且应该只更新已更改的文件/文件夹。此外,应该有某种同步概述和选择,例如,如果它显示有 4 个文件已更改,则应该可以只同步两个文件,暂时保留另外两个文件。因此,需要某种适用于 Linux 的智能同步机制。

答案1

我发过类似的问题这里. 还是没有答案。

我尝试了很多,但只有 unison 真正管用。它可以在无头模式下与 cron(自动)一起使用,也可以在 GUI 模式下使用,后者显示您要比较的两个目录之间的差异。

它往往在本地机器上“占用大量磁盘空间”,但会计算增量传输,并且不会浪费带宽(它使用 rsync 进行传输)。

你可能还想尝试免费文件同步:类似但不太受欢迎。

答案2

一种选择是使用 rsync 或其图形版本 (gnome) grsync。

我使用这个程序来备份我的文件,但它可以用于同步。

为了自动化该过程,您可以使用具有所需频率的 cron 作业。

答案3

同步多个方向非常困难。如果发生不可避免的冲突,该怎么办?例如,文件 A 在节点 1 和节点 2 上同时被编辑;或者几乎同时编辑,以至于您的系统同时看到两者的更改。哪一个更可取?您是否停止同步并等待手动干预?

您会发现,当多个系统需要访问/同步相同的数据并且需要读写访问权限时,您将采用以下三种方法之一:

  1. 客户端/服务器:类似于 NFS/SMB,带有一个服务器,该服务器托管文件供所有人同时访问;服务器处理文件锁定并让每个节点知道文件系统何时发生更新。
  2. 共享存储:即 SAN 或某种形式的直接访问;可能是运行 iSCSI 目标的服务器。使用分布式锁管理器和集群文件系统
  3. 同步/集群存储:诸如 Lustre、Ceph 和 DRBD(顶部带有集群文件系统)。

由于我之前提到的问题,几乎没有人使用点对点同步工具。但是,如果你可以重新设计它,以便始终在一个方向上进行更新,那么事情就会变得非常简单。

相关内容