Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1416755
  • 博文数量: 264
  • 博客积分: 5810
  • 博客等级: 大校
  • 技术积分: 3528
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-13 17:15
文章分类

全部博文(264)

文章存档

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
安装完成后,会生成inotifywaitinotifywatch两个指令,其中,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、  日志反馈怎么做到实时收集

阅读(1796) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~