天天看点

lsyncd+rsync实现实时自动同步

一、概述

一般rsync软件是通过crond这支后台进行(计划任务)来实现自动同步数据,如今已有更好的开源软件来代替使用crond了,那就是lsyncd( Live Syncing (Mirror) Daemon) ,它的工作原理:监视本地(rsync client)的目录,当源数据有文件或目录更新时,更新本地文件或目录到远端机器(rsync server),保持实时文件同步,但是它更新数据时需要远端rsync server运行rsync demon

配置环境如下

(1)需要配置rsyncd.conf文件的一端,称为rsync server

(2)不需要配置rsyncd.conf文件的一端,称为rsync client

(3)本次环境如下

rsync服务器:192.168.0.53(安装rsync)

rsync客户端:192.168.0.54(安装rsyncd +lsyncd )

lsyncd的功能:

(1)开源软件lsyncd采用inotify原理监听某一目录,如果目录内发生增、删、改、利用rsync协议自动同步到多个服务器

(2)inotify,从kernel 2.6.13开始正式并入内核,RHEL5支持

(3)可以本地多点目录的监控并实现到远程目录的同步

(4) 在rsync client上通过lsyncd监控并推送数据给rsync server的rsync daemon,rsync server接收lsyncd推送过来的数据,并写入本地磁盘

(5)官方介绍:http://code.google.com/p/lsyncd

注意:而对于那种实时都在变化的数据(例如:数据库),那么这种数据的同步, DRBD 技术是一个更好的选择

二、软件的下载与安装

1、 服务 器端(rsync)

(1)下载并安装rsync

[[email protected] ~]# wget http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz

[[email protected] ~]# tar zxvf rsync-3.0.7.tar.gz

[[email protected] ~]# ./configure --prefix=/usr/local/rsync --with-rsyncd-conf=/usr/local/rsync/etc/rsyncd.conf --disable-ipv6 && make && make install

(3)创建用于同步数据的目录(rsync服务器端)

作用:该目录用于存放lsyncd推送过来的数据

[[email protected] ~]# mkdir /tmp/share/

[[email protected] ~]# chown -R root:root /tmp/share;

2、 客户端 (lsyncd+rsync)

(1)下载并安装rsync,无需配置rsyncd.conf

[[email protected] ~]# wget http://www.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz

[[email protected] ~]# tar zxvf rsync-3.0.7.tar.gz

[[email protected] ~]# ./configure --prefix=/usr/local/rsync  --disable-ipv6 && make && make install

(2)下载并安装lsyncd

[[email protected] ~]# wget http://lsyncd.googlecode.com/files/lsyncd-1.26.tar.gz

[[email protected] ~]# tar zxvf lsyncd-1.26.tar.gz

[[email protected] ~]# ./configure --prefix=/usr/local/lsyncd --enable-xml-config && make && make install

(3)创建用于同步数据的目录(rsync客户端)

作用:该目录用于存放将要同步给rsync server的数据

[[email protected] ~]# mkdir /tmp/share

[[email protected] ~]# chown -R root:root /tmp/share;

三、配置rsync服务器端与rsync客户端

1、配置rsync服务器端

1)配置rsync      

[[email protected] ~]# mkdir /usr/local/rsync/etc

[[email protected] ~]# vi /usr/local/rsync/etc/rsyncd.conf

uid = root

gid = root

use chroot = no

max connections = 4

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

[share]

path = /tmp/share #保存将要被同步的数据的目录

comment = My Share Documents

hosts allow = 192.168.0.54 #允许访问的主机IP

hosts deny = 0.0.0.0/32

list = yes

ignore errors = yes

read only = false   #是否只读

2)配置lsyncd

[[email protected]example1 ~ ]# mkdir /usr/local/lsyncd/etc

[[email protected] lsyncd-1.26]# cp lsyncd.conf.xml /usr/local/lsyncd/etc/

[[email protected] lsyncd-1.26]# ln -sf /usr/local/lsyncd/etc/lsyncd.conf.xml /etc/lsyncd.conf.xml

[[email protected]example1 ~ ]# vi  /usr/local/lsyncd/etc/lsyncd.conf.xml

<lsyncd version="1">

<settings>

<logfile      filename="/var/log/lsyncd.log"/>

<binary     filename="/usr/local/rsync/bin/rsync"/>

<pidfile      filename="/var/run/lsyncd.pid"/>

<callopts>

<option text="-avz"/>

<option text="--delete"/>

<option text="--force"/>

<exclude-file/>

<source/>

<destination/>

</callopts>

</settings>

<directory>

<source path="/tmp/share/"/>

#注意区别:"/tmp/share/" 与 "/tmp/share"

<target path="192.168.0.53::share"/>

</directory>

</lsyncd>

2、配置rsync客户端

[[email protected] ~]# mkdir  /usr/local/rsync/etc

[[email protected] ~]# touch /usr/local/rsync/etc/rsyncd.conf

三、启动相关服务并测试

1、rsync服务器端

[[email protected]example1 ~ ]#  /usr/local/rsync/bin/rsync  --daemon

2、rsync客户端

[[email protected]example2 ~ ]#  /usr/local/rsync/bin/rsync  --daemon

[[email protected]example2 ~ ]#  /usr/local/lsyncd/bin/lsyncd  --conf  /usr/local/lsyncd/etc/lsyncd.conf

3、测试

先在rsync client的/tmp/share/目录进行增加、删除文件,然后再查看rsync server上的/tmp/share目录情况

继续阅读