文件同步(一) lsyncd

环境

[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


2. 配置服务端到客户端免密码登陆


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"

}

更多配置项可参考 Google Wiki,不过有些选项并没介绍,不知是不是版本问题了,比如 settings 中的 insist,这个选项默认为 false,

当启动 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





你可能感兴趣的:(文件同步(一) lsyncd)