通过lsyncd和rsync实现实时同步
一般rsync软件是通过crond这支后台进行(计划任务)来实现自动同步数据,如今已有更好的开源软件来代替使用crond了,那就是lsyncd( Live Syncing (Mirror) Daemon),它的工作原理:监视本地(rsync client)的目录,当源数据有文件或目录更新时,更新本地文件或目录到远端机器(rsync server),保持实时文件同步,但是它更新数据时需要远端rsync server运行rsync demon 。
环境准备:
机器A:192.168.170.132(源端)
机器B:192.168.170.135(目标端)
1、目标端安装:
安装rsync:
直接通过yum安装即可,执行命令如下:
yum -y install rsync
安装完成后编辑配置文件,配置文件内容如下:

配置文件中各个参数说明可参考https://blog.ywdevops.cn/index.php/2020/03/14/sersync/
配置完成后通过命令启动rsync,启命令如下:
rsync --daemon --config=/etc/rsync.conf //注意:是两个横杠(-)
2、源端(服务端): (源端只安装lsyncd,不需要安装rsync)
安装lsyncd,直接执行如下命令安装即可:
yum -y install lsyncd
如果提示找不到包可先安装依赖的包管理文件在安装,如下:
yum search epel
yum -y install epel-release.noarch
安装完成后编辑配置文件/etc/lsyncd.conf,内容如下:

settings {
logfile = "/logs/sync/lsyncd.log",
statusFile = "/logs/sync/lsyncd.stat",
statusInterval =1,
}
sync{
default.rsync,
source="/data/test/",
target="192.168.170.135::backup",
exclude = { ".*", "*.log" },
excludeFrom="/etc/rsync_exclude.lst",
init=false,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true
}
}
参数说明如下:
- /data/test/:要实时同步的目录
- target:目标服务器地址(远端)以及对应模块
- exclude:排除不需要同步的目录
- excludeFrom=”/etc/rsync_exclude.lst”,#设置排除不需要同步的文件的列表,可以不需要同步的文件,文件夹写在rsync_exclude.lst中,文件夹目录相对于:/data/test
- init = false:默认 true 当init = false ,只同步lsync启动后发生改动事件,启动之前的文件不同步不会进行同步
- 还有很多其他参数自行百度即可
编辑配置文件 rsync_exclude.lst ,根据需要加入不需要同步的文件,如图:

如果要同步多个机器,那么就再配置文件中添加多个sync模块即可
例如:要在原有基础上增加本地/data/gong目录同步到远程机器的backup下,如图:

启动lsyncd:
配置完成后,通过命令systemctl start lsyncd启动即可,添加自启动: systemctl enable lsyncd
启动后进行测试即可
注意:上述的同步过程中都是没有设置密码的,如果要通过密码认证进行同步,那么首先在目标端的rsync配置文件中需要开启认证功能,如图:

在源服务端编辑配置文件,增加内容如下:

注意:上述配置文件中的用户名要是目标端的rsync中配置的用户名,密码文件passwd.txt中的密码要和目标端rsync中配置的密码一样(passwd.txt需要单独创建并写入密码)
配置完成后重启lsyncd即可:systemctl restart lsrynd
至此:通过rsync和lsyncd实现实时同步完成
更多关于lsyncd的参数请自行百度查询!!!!


