一、lsyncd是什么?
前几天有个同事问道说怎么去同步远程服务器上的文件或目录,第一反应当然是想到说用rsync,但是时效性有点差(调用cron),刚好在vpsee的博客看到有介绍说用lsyncd,它采用了Linux内核(2.6.13 及以后)里的inotify触发机制,这种机制可以做到只有在需要(变化)的时候才去同步。lsyncd密切监测本地服务器上的参照目录,当发现目录下有文件或目录变更后,立刻通知远程服务器,并通过rsync 或rsync+ssh方式实现文件同步。
二、lsyncd安装
CentOS官方源没有包含lsyncd,需要去安装epel源才有
三、lsyncd使用
lsyncd安装完后默认并没有提供配置文件,不过我们可以去/usr/share/doc/lsyncd/examples找相关例子
备注
lsyncd的配置文件使用的是lua风格的。更多详情请访问 Lua
了解完之后我们就来实验一番先。首先先配置lsyncd,格式很简单,注意source、host、targetdir部分即可
因为这里使用rsyncssh进行同步,所以还需要配置root账号无密码ssh登录,然后在远程机器上创建目录/tmp/clavinli
配置好之后在本地机器上启动lsyncd服务,这时本地机器的/root/clavinli目录就会同步到10.2.68.38的/tmp/clavinli目录了
备注
lsyncd使用rsyncssh同步的时候是调用ssh的22端口,但因为我这边使用了非常规的ssh端口,因此这里需要额外添加个ssh的选项
四、lsyncd优化
在使用lsyncd的时候做了个测试,创建大量的文件(超过10000)会提示:
刚开始就提到说lsyncd使用了inotify触发机制,但是监控的文件数是有限的(默认是8192)
现在他就没有这个限制了^^