天天看点

多台web服务器代码同步之rsync+inotify-tool

rsync+inotify

企业网站同步的方式有多重,可以用共享硬盘挂载方式,但是也可以是用rsync+inotify-tool的方式。

rsync:负责把数据推送到服务端。

inotify:负责在客户端监控代码或者文件变更,触发推送。

环境说明:

centos-6.5

A服务端(192.168.10.2)   B客户端(192.168.10.1)

<a href="http://s3.51cto.com/wyfs02/M01/4C/77/wKiom1Q9_kKiUdu_AABlwNnTQ0w567.jpg" target="_blank"></a>

2:配置文件同步

首先都要安装rsync 服务 ,在主节点A上安装rsync 加inotify-tools

yum -y install rsync

下载安装inotify-tools

wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

tar zxvf inotify-tools-3.14.tar.gz

cd inotify-tools

./configure &amp;&amp; make &amp;&amp; make install

做好链接ln -sv /usr/local/lib/libinotify* /usr/lib/ 如果是64位系统 ln -sv /usr/local/lib/libinotify* /usr/lib64

要不然启动会报这个错误“/usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0”

在主机B 上配置rsync

建立rsyncd.conf 配置文件 

cat /etc/rsyncd.conf 

uid = root#指定该模块传输文件时守护进程应该具有的uid

gid = root #指定该模块传输文件时守护进程应该具有的gid 

use chroot = no

hosts allow =192.168.10.1 192.168.10.2 #充许任何主机连接

max connections = 10 #客户端最大连接数,默认0(没限制) 

pid file = /var/run/rsyncd.pid #运行进程的ID写到哪里 

lock file = /var/run/rsync.lock #lock记录文件 

log file = /var/log/rsyncd.log #日志记录文件 

[web] # 这里是认证的模块名,在client端需要指定

path =/  # 需要做备份的目录。(最好是备份目录的当前目录,因为他会把整个文件夹备份过来,做多了就重复了。)

comment = dwg file

ignore errors # 可以忽略一些无关的IO错误

read only = no #no客户端可上传文件,yes只读

list = false

auth users = user1 # 认证的用户名,如果没有这行,则表明是匿名

secrets file = /etc/server.pas # 指定认证口令文件位置

建立认证密码文件

cat /etc/server.pas 

User1:123456

chmod 600 /etc/server.pas 

启动服务 rsync --daemon

然后在主机A 上建立 密码文件

123456

chmod 600 /etc/server.pas

然后在主接点 A 上创建监控脚本

监控/usr/local/nginx/html/目录的 modify,delete,create,attrib 情况有这些情况就直接推送到B服务器上去

cat /root/rsync.sh 

#!/bin/bash

src=/web

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $src | while read file

do

done

(注视:

-m 是保持一直监听 

-r 是递归查看目录 

-q 是打印出事件 

--timefmt 是指定时间的输出格式 

--format 指定文件变化的详细信息 

-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件 

然后运行

nohup ./rsync.sh &amp; 

本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1564307,如需转载请自行联系原作者

继续阅读