我有两台虚拟机,主机操作系统是 ESXi 3.5,客户操作系统是 Centos 4.6。远程有两个 ESXi 服务器,每个服务器都包含一个 Centos 4.6 虚拟机。我希望,无论我在一台虚拟机中对任何文件/文件夹所做的更改,都应该自动同步到另一台远程虚拟机上。同步过程应该是自动的。它应该只同步差异,而不是模拟使用覆盖操作的整个副本。同步应该足够智能,可以查找已更改的内容和未更改的内容,并且应该只更新已更改的文件/文件夹。此外,应该有某种同步概述和选择,例如,如果它显示有 4 个文件已更改,则应该可以只同步两个文件,暂时保留另外两个文件。因此,需要某种适用于 Linux 的智能同步机制。
答案1
答案2
一种选择是使用 rsync 或其图形版本 (gnome) grsync。
我使用这个程序来备份我的文件,但它可以用于同步。
为了自动化该过程,您可以使用具有所需频率的 cron 作业。
答案3
同步多个方向非常困难。如果发生不可避免的冲突,该怎么办?例如,文件 A 在节点 1 和节点 2 上同时被编辑;或者几乎同时编辑,以至于您的系统同时看到两者的更改。哪一个更可取?您是否停止同步并等待手动干预?
您会发现,当多个系统需要访问/同步相同的数据并且需要读写访问权限时,您将采用以下三种方法之一:
- 客户端/服务器:类似于 NFS/SMB,带有一个服务器,该服务器托管文件供所有人同时访问;服务器处理文件锁定并让每个节点知道文件系统何时发生更新。
- 共享存储:即 SAN 或某种形式的直接访问;可能是运行 iSCSI 目标的服务器。使用分布式锁管理器和集群文件系统
- 同步/集群存储:诸如 Lustre、Ceph 和 DRBD(顶部带有集群文件系统)。
由于我之前提到的问题,几乎没有人使用点对点同步工具。但是,如果你可以重新设计它,以便始终在一个方向上进行更新,那么事情就会变得非常简单。