码迷,mamicode.com
首页 > 其他好文 > 详细

rsync+inotify实时数据同步单目录实战

时间:2014-09-07 21:08:55      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:blog   http   os   io   使用   ar   for   文件   数据   

rsync+inotify实时数据同步单目录实战

 

rsync+inotify实时数据同步单目录实战

 

inotify是一个强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。

 

inotify配置是建立在rsync服务基础上的配置过程

操作系统

主机名 网卡eth0 默认网关 用途
root@58server1 192.168.1.111 192.168.1.1 Rsync服务端
root@58client 192.168.1.121 192.168.1.1 Rsync 节点

子网掩码均为255.255.255.0

 

具体需求:

要求在58server1上以rsync守护进程的方式部署rsync服务,使得root@58client的 rsync节点客户端主机,可以把本地数据通过rsync的方式备份到数据备份服务器58server1上,本例的客户端仅以58client为例

 

一、在配置inotify前己经把root@58server1 Rsync服务端的rsync服务部置好

现在在58client服务器中安装部置inotify监控服务

配置rsync服务略

 

 

二、开始安装inotify

在安装inotify-tools前请先确认你的linux内核是否达到了2.6.13,并且在编译时开启CONFIG_INOTIFY选项,

1)  查看当前系统是否支持inotify

 

 

2)下载inotify源码包

 

 

3)编译安装inotfiy

参数:

--prefix=PATH   指定编译安装的路径

提示:更多的编译参数可以使用./configure –h 查看,编译成功后会生成4个目录,

小软件一般规范安装到同一个目录,一般为/usr/local中

建立一个软链接

 

 

进入安装inotify的目录

查看是否编译成功,

使用echo $?  返回0表示成功

 

只关注下面两个文件

bin

|-- inotifywait

`-- inotifywatch

bubuko.com,布布扣

 

./bin/inotifywait –help

 

 

 

 

4) 编写inotify实时监控脚本

 

事件相关参数大小:

默认:

[root@58client inotify]# cat /proc/sys/fs/inotify/max_user_watches

8192

[root@58client inotify]# cat /proc/sys/fs/inotify/max_queued_events

16384

[root@58client inotify]# cat /proc/sys/fs/inotify/max_user_instances

128

并发大时可以修改增大这些参数

 

开始编写inotify脚本

host rsync服务器地址

src本地目录  dst模块  要和/etc/rsyncd.conf中的模块名对应

user 用户

rsync_passfile密码文件

inotify_home  inotify定义inotifywait的目录

 

#jude下面的内容是检查上面参数是否存在

判断$src目录的变化等参数

while reade file死循环,通过|管道实时读取上面事件的变化,一讲取到就循环执行以下命令进行推送

经过测试,每秒200个文件并发,数据同步几乎无延尽(小于1秒)

 

 

5) 测试rsync是否成功推送

[root@58server1 backup]# rsync -avz -P --delete /backup rsync_backup@192.168.1.111::backup/ --password-file=/etc/rsync.password

 

 

 

一般添加了脚本后要格式化一次脚本

 

 

6) 在客户端运行脚本

sh -x inotify.sh

 

使脚本在后台运行

[root@58client scripts]# sh inotify.sh &

 

 

[root@58client dingjian]# for n in `seq 10000`;do /bin/cp /bin/cat /dingjian/cat$n;done

 

服务端

[root@58server1 dingjian]# ls -l /dingjian|wc -l

 

查看客户端58client后台运行的inotify脚本进程

[root@58client scripts]# ps -ef|grep inotify

 

 

bubuko.com,布布扣

rsync+inotify实时数据同步单目录实战

标签:blog   http   os   io   使用   ar   for   文件   数据   

原文地址:http://www.cnblogs.com/L-H-R-X-hehe/p/3960754.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!