lsyncd+rsync实现实时自动同步

本文来自己网络

本示例所需要的软件是:lsyncd与rsync

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

一、配置环境

系统版本CentOS 6.5

客户端(目标):rsync(接收同步资源服务器)

服务端(源):lsyncd(发送资源服务器)

clip_image001

二、客户端安装

1. 安装rsync

1.1.1.yum install rsync

默认情况下rsync已安装检查安装

rpm qa|grep rsync

如果没有,运行以下命令安装:

#yum install rsync

1.1.2.检查rsync 运行状态

chkconfig --list rsync

rsync off (默认为开启)

1.1.3.在xinetd配置中打开rsync服务

[root@node2 ~]# vi /etc/xinetd.d/rsync

disable = no ## 默认yes 改成 no

1.1.4.再次检查rsync状态

chkconfig --list rsync

rsync on(已开启服务)

1.1.5. 确认xinetd服务开启

[root@node2 ~]# chkconfig --level 345 xinetd on

启动xinetd
[root@node2 ~]# service xinetd start
Starting xinetd: [ OK ]

2、配置rsyncd

2.1.编辑配置文件

root@node2 ~]#mkdir /data/logs/sync/ -p

root@node2 ~]# vi /etc/rsyncd.conf

log file = /data/logs/sync/rsyncd.log

pid file = /data/logs/sync/rsyncd.pid

lock file = /var/run/rsync.lock

use chroot = yes

[www]

path = /data/www

hosts allow = 192.168.0.211 (服务端ip)

uid = www

gid = www

read only = false

2.2.重启服务

service xinetd restart

2.3确认873端口监听

[root@node2 ~]# netstat -anp | grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3169/xinetd

2.4建立资源同步目录

mkdir /data/www –p

chown www:www /data/www

三、服务器端安装

1、安装lsyncd:

1.1.安装lsyncd

需要lua支持。

安装服务:lsyncd(注意:阿里云yum源epel有该服务,没有的话需要安装(yum -y install epel-release)

yum install lua lsyncd

1.2建立配置文件lsyncd.conf

[root@node1~]#mkdir /data/logs/sync/ -p

[root@node1~]# vi /etc/lsyncd.conf
settings {

logfile = "/data/logs/sync/lsyncd.log",

statusFile = "/data/logs/sync/lsyncd.stat",

statusInterval =1,

}

sync{

default.rsync,

source="/data/www/",

target="192.168.0.212::www",

exclude = { ".*", "*.log" },

excludeFrom="/etc/rsync_exclude.lst",

init=false,

rsync = {

binary = "/usr/bin/rsync",

archive = true,

compress = true,

verbose = true

}

}

说明:

/data/www/ #要实时同步的目录
192.168.0.212 #要实时同步到的远端机器即接收服务器地址。
www #对应server端192.168.0.211的rsync的tag

exclude = { ".*", "*.log" } #排除不需要同步的文件
excludeFrom="/etc/rsync_exclude.lst",#设置排除不需要同步的文件的列表,可以不需要同步的文件,文件夹写在rsync_exclude.lst中,文件夹目录相对于:/data/www

如果要同步多台就在这个文件中每同步一台加一项如下:

sync{

default.rsync,

source="/data/www/",

target="192.168.0.212::www",

init=galse,

rsyncOps={"-avz","--delete"}

}

sync{

default.rsync,

source="/www/html/",

target="192.168.0.213::www",

init=galse,

rsyncOps={"-avz","--delete"}

}

1.3设置不需要同步的文件或文件夹

# vim /etc/rsync_exclude.lst

conf

app/log

1.4建立资源同步目录

mkdir /data/www -p

1.5配置max_user_watches

echo 65535000 > /proc/sys/fs/inotify/max_user_watches

echo fs.inotify.max_user_watches=65535000 >> /etc/sysctl.conf

1.6启动lsyncd
[root@node1~]# /etc/init.d/lsyncd start 或service lsyncd start

确认lsyncd是否启动

[root@node1~]# /etc/rc.d/init.d/lsyncd status 或service lsyncd status

lsyncd (pid 21125) is running...

把lsyncd加入到随机器启动当中

[root@node1~]# chkconfig lsyncd on

2.同步测试

在服务器端(192.168.0.211)上的目录/data/wwwx下新建文件test-server

[root@node1 www]#cd /data/www

[root@node1 www]# touch test-server

[root@node1 www]# ll

total 0

-rw-r--r-- 1 root root 0 Jan 23 14:52 test-server

[root@node1 www]#

查看日志,观察同步过程

[root@node1 www]# tail -f /data/logs/sync/lsyncd.log

Sat Jan 23 14:56:13 2016 Normal: Calling rsync with filter-list of new/modified files/dirs

/test-server

/

sending incremental file list

./

test-server

sent 130 bytes received 30 bytes 13.91 bytes/sec

total size is 0 speedup is 0.00

Sat Jan 23 14:56:24 2016 Normal: Finished a list after exitcode: 0

如上,server端新增加的文件test-server已经被同步到客户端上

在客户端192.168.0.212查看:

root@node2 www]# ll

total 0

-rw-r--r-- 1 www www 0 Jan 23 14:55 test-server

[root@node2 www]#

注意:lsyncd只同步lsyncd服务启动后,所配置目录/data/www 所发生的更新,所以配置之前请保证需要同步的两边一致。

四、服务器端和客户端互相同步

参照如上配置,在客户端部署服务器端(也就是lsyncd)相关设置,在服务器部署原来的客户端相关配置(也就是rsync)

posted @ 2017-07-18 20:34  王亦福-Jeff  阅读(1374)  评论(0编辑  收藏  举报