实时文件同步

Sou*_*rav 33 linux synchronization files

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

Mel*_*lan 35

我自己没有使用过,但最近阅读了它。有一个名为 的守护进程lsyncd,我认为它完全符合您的需求。

此处阅读更多相关信息

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

Sou*_*rav 13

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

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

主机:Server1 和 Server2

使用的操作系统:CentOS 7

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

# yum install -y epel-release
# yum -y install lua lua-devel pkgconfig gcc asciidoc lsyncd
Run Code Online (Sandbox Code Playgroud)

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

服务器1配置

打开/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"
  }
}
Run Code Online (Sandbox Code Playgroud)

更改target参数中的目标IP 。

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

现在创建日志目录。

# mkdir -p /var/log/lsyncd
Run Code Online (Sandbox Code Playgroud)

启用lsyncd服务自动启动。

# systemctl enable lsyncd.service
Run Code Online (Sandbox Code Playgroud)

启动服务。

# systemctl start lsyncd.service
Run Code Online (Sandbox Code Playgroud)

Server2 配置

按照与 Server1 相同的配置并更改targetIP。

现在设置同步。

您可以从 tailf /var/log/lsyncd/lsyncd.log

感谢 MelBurslan 的建议。

  • 设置功能下的延时参数无效。请改用 **maxDelays** 变量。我已经实现了这个工具。它真的很强大。 (2认同)
  • 正如 @HasanuzzamanSatar 提到的,*delay* 参数不应位于配置文件的 **settings** 部分。它应该位于 **sync** 部分。 (2认同)

Pro*_*kup 6

通知工具

提供一个接口inotify,包括:

inotifywait

此命令只是阻止 inotify 事件,使其适合在 shell 脚本中使用。它可以观察任何一组文件和目录,并且可以递归地观察整个目录树。

inotifywatch

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


nja*_*jam 6

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