实时文件同步


22

将文件写入磁盘后,是否有任何工具可立即在两个或多个Linux服务器之间同步文件?该rsync命令对此不适合我,因为如果我rsync在cron中进行设置,则可以设置的最短时间为1分钟,但是我需要实时进行设置。


2
您是否需要从一台读写服务器到一台或多台只读服务器的同步,还是需要双向同步(双向传播)还是n向同步?如果您要双向,那么如何解决冲突?
吉尔(Gilles)“所以,别再邪恶了”

Answers:


18

我自己没有使用过,但是最近才读过。有一个名为的守护程序lsyncd,我认为它完全可以满足您的需求。

此处了解更多信息


2
恕我直言,这应该是公认的答案。 lsyncd使用inotify&应该是fs级别上最快的。更多信息,请访问github.com/axkibe/lsyncd。从该页面:Lsyncd监视本地目录树事件监视器界面(inotify或fsevents)。它会汇总并合并事件几秒钟,然后生成一个(或多个)进程来同步更改。默认情况下,这是rsync。因此,Lsyncd是一种轻量级的实时镜像解决方案,相对易于安装,不需要新的文件系统或块设备,并且不会影响本地文件系统的性能。
SACHIN GARG

5

涂油工具

提供的接口inotify,包括:

inotifywait

该命令仅阻止inotify事件,使其适合在Shell脚本中使用。它可以监视任何文件和目录集,并且可以递归监视整个目录树。

inotifywatch

此命令收集文件系统使用情况统计信息,并输出每个inotify事件的计数。


4

多主机模式下多个服务器之间的实时文件同步

有一个很好的工具,称为lsyncd可以在多个服务器之间实时同步文件。在这里,我尝试使用两个服务器。

主机:Server1和Server2

使用的操作系统:CentOS 7

在两个服务器上安装以下软件包。

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd

在两个服务器中生成ssh-key并添加到authorized_keys文件中。[将server1的公钥添加到server2的文件,authorized_keys并将server2的公钥添加到server1的authorized_keys文件]

Server1配置

/etc/lsyncd.conf使用--该行的开头打开并注释掉默认配置,然后将以下配置添加到文件中。

settings {
  logfile = "/var/log/lsyncd/lsyncd.log",
  delay = 1
}
sync {
  default.rsync,
  source="/home/test/public_html/",
  target="server2:/home/test/public_html/",
  rsync = {
    compress = true,
    acls = true,
    verbose = true,
    owner = true,
    group = true,
    perms = true,
    rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
  }
}

更改target参数中的目标IP 。

您可以根据需要更改delay参数。此处设置为1秒。

现在创建日志目录。

# mkdir -p /var/log/lsyncd

启用lsyncd服务以自动启动。

# systemctl enable lsyncd.service

启动服务。

# systemctl start lsyncd.service

Server2配置

遵循与Server1相同的配置并更改targetIP。

现在设置同步。

您可以从查看活动 tailf /var/log/lsyncd/lsyncd.log

感谢MelBurslan的建议。


设置功能下的延迟参数无效。请改用maxDelays变量。我已经实现了这个工具。它真的很强大。
Hasanuzzaman Sattar '18

3

同步可能是一个选项。它的速度非常快,传输已加密,并且有多个平台的客户端。它使用“ inotify”立即同步更改的文件。


2

您将需要使用集群文件系统类型解决方案来解决此问题-两台机器之间的简单同步不会为您提供实时响应。


实际上,这些服务器在AWS上。因此,我们无法获得集群环境!还有没有其他办法吗?
Sourav

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.