我在双向 rsync 数据同步方面遇到了问题。我想将 2 台服务器的 samba 共享同步到 1 台服务器,制作一个镜像,每天晚上同步一次。它应该看起来像这样:

凌晨 3 点 – /loc1 至 /loc2 凌晨 3:05 – /loc2 至 /loc1

问题是:

  • 人们可以在两个服务器上更改同一个文件,因此当文件在 /loc2 上编辑时,它可以覆盖从 /loc1 到 /loc2 的更改,反之亦然
  • 当文件在 /loc2 上被删除时,它仍然在 /loc1 上,因此它将被再次复制,反之亦然
  • 我认为还有更多问题我现在不记得了;D

我使用如下命令:

rsync -avth --update --max-size=500m --exclude={'*exe','*msi','*zip'} --rsh=ssh -e "ssh -i key" /loc1 /loc2

或者

rsync -avth --delete --max-size=500m --exclude={'*exe','*msi','*zip'} --rsh=ssh -e "ssh -i key" /loc1 /loc2

对我来说,一台服务器应该是主服务器,另一台应该是从服务器。我说得对吗?或者你知道如何同步吗?

1

  • 您可能想要尝试专为双向同步设计的软件,例如


    – 



最佳答案
1

评论太长

恕我直言,您自己提出的一致性问题应该是一个危险信号,表明您的方法本身存在缺陷。

正是出于这个原因,大多数基于复制的策略不允许您在目标上进行更改,而只能在源(文件)系统上进行更改。

确实存在允许您/您的用户从两个(或更多节点)同时透明地读取和写入相同“本地”文件系统的解决方案。但是,您通常谈论的是集群文件系统和集群锁管理器(可防止在多个节点上同时打开相同的文件进行读取/写入),例如 Red Hat Global File System 2 (GFS2)、Oracle Cluster File System 2 (OCFS2) 和/或其他。这样的集群文件系统将部署在某种形式的共享块存储(例如共享 SAN LUN、iSCSI 目标、共享 SAS 机箱)或复制块存储(如双主 DRBD 资源)之上。

一旦建立,据我所知,就可以通过 samba 或 NFS 共享该集群文件系统,并且您将拥有两个相同的文件共享,它们应该始终(接近)实时同步。