环境
[root@build-PC src]# lsb_release -a LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS release 6.4 (Final) Release: 6.4 Codename: Final [root@build-PC src]# lsyncd -version Version: 2.1.4
1.为方便,不用源码或安装包。lsyncd 要使用 rsync传输,所以要在客户端和服务端都安装 rsync
yum -y install lua lua-devel pkgconfig gcc asciidoc rsync yum install lsyncd
3.准备配置文件
[root@build-PC src]# cat /etc/lsyncd.conf settings { logfile = "/tmp/lsyncd.log", statusFile = "/tmp/lsyncd-status", statusInterval = 20, pidfile = "/tmp/lsyncd.pid", nodaemon = true, insist = true, } sync { default.rsyncssh, source="/tmp/src", host="192.168.4.76", targetdir="/tmp/dst" }
当启动 lsyncd 服务时,若目标主机无法访问,如 ssh 登录失败等,lsyncd 服务会退出,若设置 insist 为 true,仍会启动 lsyncd 并继续尝试连接
上面配置为 将本地 /tmp/src 目录下的文件同步到 192.168.4.76 的 /tmp/dst 目录下
4. 启动服务
因为上面配置了 nodaemon 为 true,所以启动服务后并不会转入后台运行,所以测试的时候可配置此项为 true
/etc/init.d/lsyncd start此时如向 /tmp/src 目录下添加文件 hive.sql, 则会被同步到 192.168.4.76 的 /tmp/dst 目录下,不过不是即时的,这个周期可配置
5. 需要注意的地方
如果启动服务时声明 /etc/sysconfig/lsyncd 无法执行,添加执行权限即可,这默认是个空文件
# ./lsyncd start Starting lsyncd: 19:26:42 Normal: recursive startup rsync: /tmp/lsync/ -> 192.168.4.76:/tmp/ bash: rsync: command not found rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]如有上面错误,一般为连接问题如 ssh 服务未启动或远程主机没安装 rsync,可先检查 rsync 是否正常,复制远程主机目录到本地 /tmp 下,如:
rsync -r [email protected]:/etc/yum.repos.d /tmp