本地lsyncd自动实时同步

话说是这样的...

通常的linux系统同步都是采用rsync + cron来完成,这样的办法问题就是
  1. 时间太固定,如果是太多的服务器,会对源服务器造成很大的压力
  2. 采用cron来定同步的时间,如果有一次需要马上同步,很难实现
如果你的linux内核是2.6.13以后的版本,这里可以采用inotify内核触发机制,检查只有文件发生变化才同步。 rsync同步一般是pull的形式,从远端直接拉最新的数据到本地,完成同步,当然你也可以push。 lsyncd同步是采用push的形式,syncd 密切监测本地服务器上的参照目录,当发现目录下有文件或目录变更后,立刻通知远程服务器,并通过 rsync 或 rsync+ssh 方式实现文件同步。 lsyncd 默认同步触发条件是每10秒或者每积累到一定的次数写入事件就触发一次,这个是可以配置的。 这里的安装是基于centos 6.4(64bit),lsyncd版本是2.1.4 源地址:192.168.0.11 同步地址:192.168.0.22

 安装lsyncd

yum search lsyncd (源服务器安装) 如果找不到这个包,只能说明你没有安装centos的YUM扩展包,必须先安装扩展包
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
完成扩展包的安装之后,就可以安装lsyncd了
yum install lsyncd

配置lsyncd

打开/etc/lsyncd.conf
---- -- User configuration file for lsyncd. -- -- Simple example for default rsync, but executing moves through on the target. -- -- For more examples, see /usr/share/doc/lsyncd*/examples/ -- -- sync{default.rsyncssh, source="/var/www/html", host="localhost", targetdir="/tmp/htmlcopy/"}
以上是默认的配置文件,修改配置如下:
settings {
    logfile = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/log/lsyncd/lsyncd-status.log",
    statusInterval = 20
}

sync{
    default.rsync,
    source = "/opt/lsyncd/data-source",
    target = "192.168.0.22:/opt/lsyncd/data/",
    rsync = {
        compress = true,
        acls = true,
        verbose = true,
        rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"
    }
}
如果想得到更为详细的配置文档,可以访问: Settings配置文档

建立ssh无密码登陆

登陆到192.168.0.22,生成登陆密钥
ssh-keygen -t rsa
一路回车......
cd /root/.ssh/;
mv id_rsa.pub authorized_keys
拷贝私钥到192.168.0.11的/root/.ssh/下面
chmod 600 /roo/.ssh/id_rsa
测试是否能不要密码从11登陆到22服务器
ssh [email protected]

启动lsyncd服务

/etc/init.d/lsyncd start
如果重启失败
rsync: Failed to exec /usr/bin/ssh: Permission denied (13) rsync error: error in IPC code (code 14) at pipe.c(84) [sender=3.0.6] 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]
请检查系统的selinux是否设置成disabled,如果没有,修改过来就好了

你可能感兴趣的:(本地lsyncd自动实时同步)