2011年(264)
分类:
2011-07-15 15:31:05
配置信息如下:
114.31 上面配置某个要发布的目录更新之后会同步里面的文件到31这台机器。同时会写入到监控的数据库。上面再加一个rsyncd服务。由外面的数据同步到这台机器的rsync目录下面。再触发调用
114.22 上面布置rsyncd服务。并添加notify脚本。当来自31上在面的文件过来同步之后会触发其notify脚本并继续同步到114.4这台机器。并且在同步的过程中会记录同步的日志封装成XML包返回到中央控制机器追加到日志表
114.4 上面布置rsyncd服务。
安装过程
三台机器安装rsyncd服务并配置《略见博客记录》
31. 安装notify
由于inotify特性需要Linux内核的支持,在安装inotify-tools前要先确认Linux系统内核是否达到了2.6.13以上,如果Linux内核低于2.6.13版本,就需要重新编译内核加入inotify的支持,也可以用如下方法判断,内核是否支持inotify:
[root@localhost webdata]# uname -r
2.6.18-164.11.1.el5PAE
[root@localhost webdata]# ll /proc/sys/fs/inotify
总计 0
-rw-r--r-- 1 root root 0 04-13 19:56
max_queued_events
-rw-r--r-- 1 root root 0 04-13 19:56
max_user_instances
-rw-r--r-- 1 root root 0 04-13 19:56
max_user_watches
如果有上面三项输出,表示系统已经默认支持inotify,接着就可以开始安装inotify-tools了。
可以到下载相应的inotify-tools版本,然后开始编译安装:
[root@localhost ~]# tar zxvf
inotify-tools-3.14.tar.gz
~]# cd inotify-tools-3.14
[root@localhost inotify-tools-3.14]# ./configure
[root@localhost inotify-tools-3.14]# make
[root@localhost inotify-tools-3.14]# make install
[root@11006
inotify-tools-3.14]# ll /usr/local/bin/inotifywa*
-rwxr-xr-x 1 root root 37460 Jul 15 11:16 /usr/local/bin/inotifywait
-rwxr-xr-x 1
root root 35646 Jul 15 11:16 /usr/local/bin/inotifywatch
inotify-tools安装完成后,会生成inotifywait和inotifywatch两个指令,其中,inotifywait用于等待文件或文件集上的一个特定事件,它可以监控任何文件和目录设置,并且可以递归地监控整个目录树。
inotifywatch用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息。
编写脚本进行测试文件同步
1. 在31上面我们写一个脚本来监控/mnt/mfs/5j_test 这个目录的文件信息变更
定义一个脚本:inotifyrsync.sh内容如下
#!/bin/bash
host1=10.13.114.30
src=/mnt/mfs/5j_test/
dst1=5j_test
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read files
do
/usr/bin/rsync -az --delete $src $host1::$dst1
echo "${files} was rsynced" >>/tmp/rsync.log 2>&1
done
-a 参数,相当于-rlptgoD,-r 是递归 -l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
查看一下日志:
1、 如果我删除掉一个文件
15/07/11 15:03 /mnt/mfs/5j_test/aDELETE was rsynced
2、 如果我添加一个新文件
15/07/11 15:06 /mnt/mfs/5j_test/dCREATE was rsynced
15/07/11 15:06 /mnt/mfs/5j_test/dATTRIB was rsynced
15/07/11 15:06 /mnt/mfs/5j_test/dCLOSE_WRITE,CLOSE was rsynced
做了三次rsyncd动作?
3、 如果我修改文件
15/07/11 15:07 /mnt/mfs/5j_test/4913ATTRIB was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/4913CLOSE_WRITE,CLOSE was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/4913DELETE was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/dCREATE was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/dCLOSE_WRITE,CLOSE was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/dATTRIB was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/dATTRIB was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/d~DELETE was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/.d.swpCLOSE_WRITE,CLOSE was rsynced
15/07/11 15:07 /mnt/mfs/5j_test/.d.swpDELETE was rsynced
我只是做了一个简单的VIM操作哦!
4、 如果我重命名
重命名这个事件并未触发?难道是我事件写的不够全吗?
5、 修改文件的属性权限
可以触发文件的更新事件
15/07/11 15:09 /mnt/mfs/5j_test/eATTRIB was rsynced
修改文件的属性权限成功生效了!
进一步:级联布置
30只是一台console机器上面还需要更进一步同步到底下的console机器上面去!
实现是可以的。
更高一级的学习:
1、 notify的机制能不能保证文件不丢失?
2、 文件更新事件的时候比如添加为什么会有这么多次的文件同步?
3、 能否将发生变更的文件名称记录下来一次rsyncd动作?
4、 日志反馈怎么做到实时收集