Linux

實時文件同步

  • February 2, 2022

將文件寫入磁碟後,是否有任何工具可用於在兩個或多個 linux 伺服器之間立即同步文件?該rsync命令不適合我,因為如果我rsync在 cron 中設置,我可以設置的最短時間為 1 分鐘,但我需要實時設置。

我自己沒用過,但最近讀到了。有一個名為 的守護程序lsyncd,我認為它完全符合您的需要。

在此處閱讀有關它的更多資訊

多主模式下多台伺服器之間的實時文件同步

有一個很好的工具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 中,將 server2 的公鑰添加authorized_keys到 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 相同的配置並更改targetIP。

現在同步設置好了。

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

感謝 MelBurslan 的建議。

引用自:https://unix.stackexchange.com/questions/307046