inotify+Rsync文件同步

一。下载安装

1.yum安装。

yum install rsync

2编译安装。

tar -zxvf rsync-3.0.3.tar.gz

cd rsync-3.0.3

./configure

make

make install


二。服务器配置(1.238)

案例说明,如192.168.1.237和192.168.1.238两台服务器,OS(centos6.2),192.168.1.238当服务器,192.168.1.237做client。当1.238文件删除时1.237同步删除,当1.238添加/修改时1.237同步修改。

1、采用系统默认安装的rsync 编辑/etc/rsyncd.conf文件,如果没有则新建一个

 vi /etc/rsyncd.conf

strict modes = yes

port = 873

logfile = /var/log/rsyncd.log

pidfile = /var/run/rsyncd.pid

max connections = 4

[web]

uid = root                                                                                             

gid = root

path = /home/wwwroot/pmedia/images/tmp/                                              //同步路径

read only = no

host allow = *

auth users = wwyhy                                                 //认证用户名(不是系统用户)

secrets file = /etc/rsyncd.scrt                                   //密码文件



2.添加一个密码文件

vi /etc/rsyncd.scrt

wwyhy:123456

3.改变权限为600

chmod 600 /etc/rsyncd.scrt


4.启动服务(如开有防火墙请允许873端口通过)

rsync --daemon --config=/etc/rsyncd.conf


三。client配置和同步

1.client新建密码文件

vi /etc/rsyncd.scrt

123456


2.修改权限

chmod 600 /etc/rsyncd.scrt

3.开始同步

rsync -avz --delete  --password-file=/etc/rsyncd.scrt wwyhy@192.168.1.238::web /qq


4。建立脚本

vi /root/rsync.sh

#!/bin/bash

while :

do

PATH1=/qq

rsync -avz --delete  --password-file=/etc/rsyncd.scrt wwyhy@192.168.1.238::web $PATH1 >> /var/log/rsync_client.log

#5s 循环一次

sleep 5

done

nohup /bin/bash /root/rsync.sh  &         启动脚本

四。注意事项和命令说明。

1.配置文件和密码文件不要有注释行和多余的空格。密码文件权限统一是600.


一。inotify+rsync同步部署部署环境:  

                           rsync服务器:192.168.0.1

文件服务器and rsync客户端:192.168.0.2ify-tools安装1.rsync安装配置:

http://hi.baidu.com/867358162/item/33f26ceded746919560f1dc0 

 

2.rsync

        介绍 Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify 是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。 inotify 可以监视的文件系统事件包括: IN_ACCESS,即文件被访问 IN_MODIFY,文件被 write IN_ATTRIB,文件属性被修改,如 chmod、chown、touch 等 IN_CLOSE_WRITE,可写文件被 close IN_CLOSE_NOWRITE,不可写文件被 close IN_OPEN,文件被 open IN_MOVED_FROM,文件被移走,如 mv IN_MOVED_TO,文件被移来,如 mv、cp IN_CREATE,创建新文件 IN_DELETE,文件被删除,如 rm IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己 IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己 IN_UNMOUNT,宿主文件系统被 umount IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO) 注:上面所说的文件也包括目录。

 

Linux内核的支持

•Linux内核从2.6.13开始引入 inotify
•linux在升级编译时确认是否开启了CONFIG_INOTIFY选项
•查看linux版本命令:uname –a,输出:Linux shareapp_43 2.6.27 #1 SMP Mon Jul 12 15:55:37 CST 2010 i686 i686 i386 GNU/Linux
•确认是否已经升级支持inotify,执行命令:ls /proc/sys/fs/inotify,如果支持的话会有 max_queued_events,max_user_instances,max_user_watches三项 
Linux内核参数修改
•/proc/sys/fs/inotify/max_user_instances:每个用户可创建的inotify实例最大上限数量
•/proc/sys/fs/inotify/max_user_watches:每个inotify实例可监听的最大上限数量
•/proc/sys/fs/inotify/max_queued_events:对应的inotify实例队列可容纳的最大上限事件数量 
•修改配置,并增加在自启动脚本中:/etc/rc.local
echo 12800 > /proc/sys/fs/inotify/max_user_instances
echo 500000000 > /proc/sys/fs/inotify/max_user_watches
echo 900000 > /proc/sys/fs/inotify/max_queued_events
 

 

在源主机中安装inotify-tools-3.13.tar.gz  

下载:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

 

[root@Linux-Master src]# tar zxvf inotify-tools-3.13.tar.gz

[root@Linux-Master src]# cd inotify-tools-3.13

[root@Linux-Master inotify-tools-3.13]# ./configure 

[root@Linux-Master inotify-tools-3.13]# make && make install

========================================

 

命令:

Inotifywait监听

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,attrib,move,close_write,create,delete  /root/                            //当/root/目录后里面的子目录发生改变时 会打印出来

 

Inotifywatch监听统计

inotifywatch -v -e access -e modify -t 120 -r /root/                         /root/  统计120s文件改变
3。实现inotify监控文件同步
配置同步脚本
vi /home/scritp/rsync_inoticy.sh

#! /bin/bash

PATH1=/home/wwwroot/pmedia/public/
PATH2=/home/wwwroot/pmedia/protected/views/www/website/
IP=192.168.1.235

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w %f' -e modify,attrib,move,close_write,create,delete $PATH1 $PATH2 | while read file
do
chmod -R 777 $PATH1
chmod -R 777 $PATH2
/usr/bin/rsync -auvzrog --delete --password-file=/etc/rsyncd.client $PATH1 wwyhy@$IP::web >> /var/log/rsync_clinet.log
/usr/bin/rsync -auvzrog --delete --password-file=/etc/rsyncd.client $PATH2 wwyhy@$IP::web2 >> /var/log/rsync_clinet.log

# echo "$PATH1 rsync OK!!!!!!!!! "

done

 

启动脚本:

nohup /home/scritp/rsync_inoticy.sh & 

测试修改/home/wwwroot/pmedia/public/   ,/home/wwwroot/pmedia/protected/views/www/website/  目录文件      查看192.168.1.235是否同步

 

 

 

 

 

 

 

 

 

二。 sersync部署同步

sersync主要用于服务器同步,web镜像等功能。基于boost1.43.0,inotify api,rsync command.开发。目前使用的比较多的同步解决方案是inotify-tools+rsync ,另外一个是google开源项目Openduckbill(依赖于inotify- tools),这两个都是基于脚本语言编写的。相比较上面两个项目,本项目优点是:

  1. sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤(详细见附录,这个过滤脚本程序没有实现),所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。

  2. 相比较上面两个项目,sersync配置起来很简单,其中bin目录下已经有基本上静态编译的2进制文件,配合bin目录下的xml配置文件直接使用即可。

  3. 另外本项目相比较其他脚本开源项目,使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。

  4. 本项目有出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则按设定时长对同步失败的文件重新同步。

  5. 本项目自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。无需再额外配置crontab功能。

  6. 本项目socket与http插件扩展,满足您二次开发的需要。

配置环境

                            rsync服务器:192.168.0.1

文件服务器and rsync客户端:192.168.0.2                 安装sersync

1.rsync安装配置:

http://hi.baidu.com/867358162/item/33f26ceded746919560f1dc0 

 

下载配置sersync

http://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz                64bit

 

tar zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz

cd GNU-Linux-x86

vi confxml.xml

...................

<sersync>
<localpath watch="/root/ss">
<remote ip="192.168.0.1" name="web"/>


</localpath>
<rsync>
<commonParams params="-artuz"/>
// <auth start="false" users="wwyhy" passwordfile="/etc/rsync.client"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
<failLog path="/tmp/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
<crontab start="false" schedule="600"><!--600mins-->
<crontabfilter start="false">
<exclude expression="*.php"></exclude>
<exclude expression="info/*"></exclude>
</crontabfilter>
</crontab>
<plugin start="false" name="command"/>
</sersync>

.....................................................

 

启动

./sersync2 -r  

./sersync2 -r -d       守护进程运行

转载于:https://my.oschina.net/u/214948/blog/89499

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值