inotifywait:通过inotifyAPI等待被监控文件上相应事件并返回监控结果,默认情况下,正常的结果返回至标准输出,诊断类的信息则返回至标准错误输出。他可以监控对应监控对象上指定的事件后退出,也可以进行持续的监控。
inotifywait尤其适合用于在脚本中等待某事件的发生,并可基于特定的事件执行相应操作。如将其用于脚本中监控某指定目录中的文件上的修改、新建、删除、属性信息的改变,而后使用rsync命令将事件对应的文件同步到其他主机上。
工具一--inotifywait之常用选项介绍:
-m inotifywait的默认动作是在监控至指定文件的特定事件发生一次后就退出了,而是要此选项则可实现持续性的监控。
-r 递归监控指定目录下的所有文件,包含新建的文件或子目录;如果要监控的目录中文件数量巨大,则通常需要修改/proc/sys/fs/inotify/max_users_watchs内核参数,因为其默认为8192.
-e<event> 指定要监控的特定事件,默认是监控所有的事件,包括access,modify,attrib,close_write,close_nowirte,close,open,moved_to,moved_from,move,create,delete,delete_selt等;
--timefmt <fmt> 当在--format选项中使用%T时,--timefrt选项则可以用来自定义的符合strftime规范的时间格式,此时间格式可用的格式符可以通过strftime的手册页获取;--timefrt后常有的参数是'%d/%m/%y %H:%M';
--format <fmt> 自定义inotiywait的输出格式,如--format'%T %w %f';常有的选项如下:
%w 显示被监控文件的文件名;
%f 如果发生某些事件对象是目录,则显示被监控目录的名字;默认显示为空串;
%T 使用–timefmt选项中自定义的时间格式;
工具二--inotifywatch命令介绍:
通过inotifyAPI收集被监控文件或目录的相关事件并输出统计信息。
配置rsyncd+inotify实现实时同步
环境介绍
目标主机-->rsync服务器端:CentOS 6.5
源文件主机-->rsync客户端:Ubuntu 12.04
配置rsync服务器端:
本次环境中采用rsync守护进程的方式进行数据同步。
安装rsync相关程序包
###rsync程序系统默认会安装,若没有安装可在此安装###
[root@mon-zabbix ~]# yum -y install rsync
###rsync服务通常基于超级守护进程xinetd管理的方式来实现因此需要安装xinetd###
[root@mon-zabbix ~]# yum -y install xinetd
提供rsync配置文件
###创建配置文件目录###
[root@mon-zabbix ~]#mkdir -p /etc/rsyncd
###创建rsync主配置文件###
[root@mon-zabbix ~]#touch /etc/rsyncd/rsyncd.conf
###这个配置文件有两部分组成,一是全局定义,二是定义rsync共享目录###
[root@mon-zabbix ~]# cat /etc/rsyncd.conf
# Global Settings 全局定义
uid =root #使用哪个用户运行或获取数据
gid = root #用户都以来宾账号的方式运行
use chroot = no #在服务运行时要不要把他锁在家目录中
max connections = 10 #作为服务器端最大并发连接数
strict modes = yes #表示是否工作在严格模式下,严格检查文件权限等相关信息
pid file = /var/run/rsyncd.pid #定义pid文件路径
log file = /var/log/rsyncd.log #定义日志文件存放路径的
# Directory to be synced #定义共享目录
[Git_rsync] #要同步的目录名称,多个目录名称不能重名
path = /data1/gitbackup/git/ #定义目录的路径
list = false #是否允许用户列出文件列表
read only = no #如果打算让别人仅仅是来拉取数据的,yes就可以了,如果打算让别人推送过来做备份的那就为no,表示客户端是否可以推送的
write only = no #只允别人在里面写数据,但不可以拉取数据
ignore errors = yes #表示如果中间同步过程有一个文件出错了是要继续同步还是中止同步,yes表示继续同步,no表示中止同步
hosts allow = 10.171.215.112 #白名单,那些主机可以访问
auth users = git #做用户验证(认证)的,只允许那个用户来同步
secrets file = /etc/rsyncd/rsyncd.secrets #存放验证(认证)用户的密码的
###由于守护进程程序xinetd是读取默认rsync的配置(/etc/rsyncd.conf)###
[root@mon-zabbix ~]#ln -sv /etc/rsyncd/rsyncd.conf /etc/rsyncd.conf
提供rsync认证用户密码文件
[root@mon-zabbix ~]#vim /etc/rsyncd/rsyncd.secrets
git:hui1234 #其中冒号前的是用户名,冒号后的是对应用户的密码
###由于此密码文件是明文显示,所以文件权限设为600###
[root@mon-zabbix ~]#chmod 600 /etc/rsyncd/rsyncd.secrets
设置rsync开机自启动
[root@mon-zabbix ~]#chkconfig rsync on
启动rsync服务
[root@mon-zabbix ~]#service xinetd start
查看rsync监听信息
[root@mon-zabbix ~]# netstat -tanlp | grep xinetd