【Linux学习】lsyncd搭建

1 服务器建立ssh互信

首先在两个服务器建立ssh互信,参考上篇文章。

2 lsyncd安装

yum install http://rpmfind.net/linux/epel/7/x86_64/Packages/l/lsyncd-2.2.2-1.el7.x86_64.rpm

3 配置lsyncd.conf文件

vi /etc/lsyncd.conf #修改配置文件

settings {
        logfile = "/var/log/lsyncd/lsyncd.log", --日志输入文件
        statusFile = "/var/log/lsyncd/lsyncd.status",--文件状态输出文件
        inotifyMode = "CloseWrite",--监控模式
        maxProcesses = 10,-- 最大进程
        nodaemon=false,--后台守护模式
        maxDelays = 2,--最大的监听事件数,监听的事件进行排队,即使后面的delay时间还没到,同步文件仍然进行
 }

sync{
        default.rsync,
        source="/file",--本机要同步的目录
        target="[email protected]:/file",--目标主机和待同步的目录
        init=false,--初始化false,表示只同步lsyncd进程启动后发生的变化
        delete=true,--默认模式,进程启动期间和运行期间,如果发生删除事件,同步到目标主机。
        delay=3600,--同步事件,默认15秒,也就是每到delay时间,就进行同步一次。
        rsync = {
                 binary = "/usr/bin/rsync",--rsyncd程序位置
                 archive = true,
                 -- rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
				 -- 如果要指定其它端口,请用上面的rsh
                 compress = true,--压缩传输默认为true,
                 verbose = true
         }
} 

4 启动lsyncd

lsyncd /etc/lsyncd.conf

5 参数解释

setting

  • logfile:日志文件
  • statusFile:定义状态文件
  • nodaemon=true:表示不启用守护模式,默认
  • statusInterval:将监控目录文件的变化状态写入statusFile的间隔,默认10秒
  • inotifyMode:指定inotify监听的变化类型,,默认是CloseWrite,还可以是ModifyCloseWrite or Modify
  • maxProcesses:最大同步进程,例如同时有10个文件需要同步,而maxProcesses=5,则最大只能看到有5个rysnc进程
  • maxDelays:通过lsyncd.status文件,来查找当前监听目录发生的事件,包括Create(新建) modify(修改) Attrib(文件属性修改,如文件权限),delete(删除),如果事件数达到maxDelays,即使下面定义的delay延迟时间还没到,也会进行同步。

sync

  • default.rsync :本地目录间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程;
    default.direct :本地目录间同步,使用cprm等命令完成差异文件备份;
    default.rsyncssh :同步到远程主机目录,rsync的ssh模式,需要使用key来认证
  • source:主机要同步的目录
  • target:目标主机和待同步的目录
  • init:初始化false,表示只同步lsyncd进程启动后发生的变化,默认为true
  • delay:同步延迟时间,默认15秒,也就是每到delay时间,就进行同步一次。
  • excludeFrom:排除要同步的文件列表
  • delete:默认模式,进程启动期间和运行期间,如果发生删除事件,同步到目标主机。

rsync

(提示一下,deleteexclude本来都是rsync的选项,上面是配置在sync中的,我想这样做的原因是为了减少rsync的开销)

  • bwlimit 限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)
  • compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
  • perms 默认保留文件权限。
  • 其它rsync的选项

6 实验

使用上面的配置文件 maxDelays = 2,表示当监听到两个事件,就会同步到目标主机。delay=3600,表示每过1小时,触发同步操作一次。

首先,我们在主机1/file目录下上传了一个f~.html文件,发现已经同步到主机2去了,不能理解,应该是上传两个文件才会同步到主机2的呀,于是查看lsyncd的status文件,发现上传一个文件,触发了三次事件,分别是Create(新建) 、modify(修改)、 Attrib(文件属性修改,如文件权限)。所以3>2,所以发生了同步,同理可以调大maxDelays的值,来继续测试,有兴趣的可以继续实验。
【Linux学习】lsyncd搭建_第1张图片

参考文章

https://axkibe.github.io/lsyncd/manual/config/file/

你可能感兴趣的:(lsyncd,inotify,linux,Linux)