是否有任何工具可以在将文件写入磁盘后立即在两个或多个Linux服务器之间同步文件?该rsync
命令不适合我,因为如果我rsync
在 cron 中设置,我可以设置的最短时间是 1 分钟,但我需要它是实时的。
答案1
我自己没有使用过它,但最近读到了它。有一个名为 的守护进程lsyncd
,我认为它完全可以满足您的需要。
了解更多相关信息这里
答案2
多主模式下多台服务器之间的实时文件同步
有一个很好的工具,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
文件中]
服务器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"
}
}
target
更改参数中的目标IP 。
您可以delay
根据您的要求更改参数。这里设置为1秒。
现在创建日志目录。
# mkdir -p /var/log/lsyncd
使lsyncd
服务自动启动。
# systemctl enable lsyncd.service
启动服务。
# systemctl start lsyncd.service
服务器2配置
按照与Server1相同的配置并更改IP target
。
现在同步已设置。
您可以检查活动tailf /var/log/lsyncd/lsyncd.log
感谢梅尔布尔斯兰的建议。
答案3
同步事物可能是一个选择。它的速度非常快,传输是加密的,并且有多个平台的客户端。它使用“inotify”立即同步更改的文件。
答案4
您需要使用集群文件系统类型解决方案来解决此问题 - 两台计算机之间的简单同步不会为您提供实时响应。