实时同步工具lsyncd
Lsyncd简介
Lysncd是lua语言封装了 inotify 和 rsync 工具,采用了 Linux 内核(2.6.13 及以后)里的 inotify 触发机制,通过inotify或者fsevents监控本地目录的变化事件,然后通过rsync同步。Lsyncd最强大之处在于简单高效传输海量数据并且Lsyncd支持多种工作模式。
yum安装Lsyncd
[root@nfs ~]#yum install -y lsyncd [root@nfs ~]# rpm -qc lsyncd /etc/logrotate.d/lsyncd /etc/lsyncd.conf #==》Lsyncd主配置文件 /etc/sysconfig/lsyncd
lsyncd.conf配置选项说明
全局设置
--开头表示注释
logfile 定义日志文件 stausFile 定义状态文件 statusInterval 将lsyncd的状态写入上面的statusFile的间隔,默认10秒 nodaemon=true 表示不启用守护模式,默认 inotifyMode 指定inotify监控的事件,默认是CloseWrite,还可以是Modify或CloseWrite or Modify maxProcesses 同步进程的最大个数。假如同时有20个文件需要同步,而maxProcesses = 8,则最大能看到有8个rysnc进程 maxDelays 累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到
sync定义同步参数
default.rsync 本地目录之间同步,使用rsync,也可以达到使用ssh形式的远程rsync效果,或daemon方式连接远程rsyncd进程; default.direct 本地目录之间同步,使用cp、rm等命令完成差异文件备份; default.rsyncssh 同步到远程主机目录,rsync的ssh模式,需要使用key来认证
目录设置
source 同步的源目录,使用绝对路径。 target 定义目的地址.对应不同的模式有几种写法: /tmp/dest 本地目录同步,可用于direct和rsync模式 172.29.88.223:/tmp/dest 同步到远程服务器目录,可用于rsync和rsyncssh模式 excludeFrom 排除选项,后面指定排除的列表文件,如excludeFrom = "/etc/lsyncd.exclude",如果是简单的排除,可以使用exclude = LIST。
为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running
true Lsyncd将在目标上删除任何不在源中的内容。 在启动时和正常操作中被删除的内容。 false 在lsyncd启动后将在目标上不删除任何不在源中的内容, 在启动时和正常操作中被删除的内容。 startup 启动时将执行一次完全文件同步,保证完全一致;正常运行过程中不会删除target中的文件 running 启动前,增加的会同步,删除的不同步;正常运行过程中会删除target中的文件
rsync选项
bwlimit 限速,单位kb/s,与rsync相同(这么重要的选项在文档里竟然没有标出)
compress 压缩传输默认为true。在带宽与cpu负载之间权衡,本地目录同步可以考虑把它设为false
perms 默认保留文件权限。