CentOS7下使用Lsyncd實現文件實時同步
Lsyncd簡單介紹
Lsyncd 使用文件系統事件接口(inotify 或 fsevents)來監視本地文件和目錄的更改。
Lsyncd 在幾秒鐘內將這些文件事件整理核對后,然后生成一個或多個進程以將更改同步到遠程文件系統。默認使用的同步方法是rsync。因此,Lsyncd 是一種輕量級的實時鏡像解決方案。
Lsyncd 相對容易安裝,不需要新的文件系統或塊設備。Lysncd 不會影響本地文件系統的性能。作為 rsync 的替代方案,Lsyncd 還可以通過 rsync+ssh 推送更改。當文件或目錄被重命名或移動到本地樹中的新位置時,rsync+ssh 允許更有效的同步。(相比之下,plain rsync 通過刪除舊文件然后重新傳輸整個文件來執行移動。)
Lsyncd 2.2.1 要求 rsync >= 3.1。
官方文檔:
https://lsyncd.github.io/lsyncd/
下面介紹CentOS7下使用Lsyncd實現文件實時同步
- 源服務器A:192.168.31.230
- 目標服務器B:192.168.31.60
需求:將A服務器上/var/log/nginx/目錄下文件實時同步到B服務器中,并排除error.log*
1、A服務器上安裝lsyncd
前提是有配置EPEL源。
yum install lsyncd
2、A服務器配置到B服務器的免密登錄
ssh-keygen -t rsa -b 4096
ssh-copy-id -p 8122 root@192.168.31.60
ssh -p 8122 root@192.168.31.60
3、配置/etc/lsyncd.conf
mv /etc/lsyncd.conf /etc/lsyncd.conf_default
vi /etc/lsyncd_exclude.lst
vi /etc/lsyncd.conf
添加如下內容
/etc/lsyncd.conf
settings {
logfile = "/var/log/lsyncd/lsyncd.log",
statusFile = "/tmp/lsyncd.status",
insist = true,
inotifyMode = "Modify",
statusInterval = 1
}
sync {
default.rsyncssh,
source="/var/log/nginx/",
host="192.168.31.60",
targetdir="/data/logs_backup",
excludeFrom="/etc/lsyncd_exclude.lst",
maxDelays = 5,
delay = 0,
rsync = {
archive = true,
compress = false,
-- verbose = true
},
ssh = {
port = 8122
}
}
要排除error.log*。
vi /etc/lsyncd_exclude.lst
error.log*
4、配置文件檢查測試
lsyncd -nodaemon /etc/lsyncd.conf運行查看下是否有報錯,如果有報錯根據報錯情況排查配置文件問題。
lsyncd -nodaemon /etc/lsyncd.conf
如下圖所示,當curl http://192.168.31.230觸發了access.log變動時會觸發同步。
如果沒有報錯直接退出后就可以使用systemctl start lsyncd啟動lsyncd即可。
5、設置為服務后臺運行
systemctl enable lsyncd.service
systemctl start lsyncd.service
tail -f /var/log/lsyncd/lsyncd.log
以上就是使用Lsyncd實現文件自動同步的過程。
要比之前的文章記一次利用GrayLog實現采集與備份云服務器Web訪問日志的實現過程的方式更簡單。