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

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

 

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

 

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

 

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

操做系统bash

主机名 网卡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为例异步

 

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

如今在58client服务器中安装部置inotify监控服务测试

配置rsync服务略ui

 

 

2、开始安装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

 

./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

 

 

相关文章
相关标签/搜索