通过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 
  }
}

参数说明如下:

  1. /data/test/:要实时同步的目录
  2. target:目标服务器地址(远端)以及对应模块
  3. exclude:排除不需要同步的目录
  4. excludeFrom=”/etc/rsync_exclude.lst”,#设置排除不需要同步的文件的列表,可以不需要同步的文件,文件夹写在rsync_exclude.lst中,文件夹目录相对于:/data/test
  5. init = false:默认 true 当init = false ,只同步lsync启动后发生改动事件,启动之前的文件不同步不会进行同步
  6. 还有很多其他参数自行百度即可

编辑配置文件 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的参数请自行百度查询!!!!

标签