美文网首页
Inotify 服务

Inotify 服务

作者: DB哥 | 来源:发表于2019-09-29 08:33 被阅读0次

Linux System Environment

[root@nfs ~]# cat /etc/redhat-release                       #==》系统版本
CentOS release 6.7 (Final)
[root@nfs ~]# uname –r                                      #==》内核版本
3.10.0-862.el7.x86_64
[root@nfs ~]# uname -m                                      #==》系统架构
x86_64
[root@nfs ~]# echo $LANG                                    #==》系统字符集
en_US.UTF-8
[root@nfs ~]# rpm -qa inotify-tools                         #==》Inotifty版本
inotify-tools-3.14-8.el7.x86_64

Inotify简介

Inotify是一个实时监控实时同步的软件,Linux2.6.13起加入了inotify支持,通过inotify可以监控文件系统中添加,删除,修改,移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施这样监控的软件,另外一个这样效果的软件是中国人周洋在金山公司开发的Sersync,还有一个配置更简单的软件叫Lsyncd,实时同步软件Inotify/Sersync/Lsyncd三者功能虽然一样,但在处理文件同步效率上有很大区别。

Inotify功能

1、监控文件系统的变化,然后实时监控的结果执行我们相应的命令
2、inotify监控到目录的变化,然后配合rsync命令推送到备份服务器,实现实时备份功能

Inotifywait参数说明

-m ,-monitor                #==》始终保持事件监听状态
-r,-recursive               #==》递归查询目录
-q,-quiet                   #==》只打印监控事件的信息
-exclude                    #==》排除文件或目录时,不区分大小写
-t,-timeout                 #==》超时时间
-timefmt                    #==》指定时间输出格式
-format                     #==》指定时间输出格式
-e,event                    #==》后面指定增,删,改等事件
inotifywait events          #==》事件说明
access                      #==》读取文件或目录内容
modify                      #==》修改文件或目录内容
attrib                      #==》文件或目录的属性改变
close_write                 #==》修改真实文件内容
close_nowrite   
close   
open                        #==》文件或目录被打开
moved_to                    #==》文件或目录移动到
moved_from                  #==》文件或目录从...移动到
move                        #==》移动文件或目录移动到监视目录
create                      #==》在监视目录下创建文件或目录
delete                      #==》删除监视目录下的文件或目录
delete_self 
umount                      #==》卸载文件系统

Inotify注意事项

1、yum安装 inotify需要使用到epel源(第三方扩展软件)
2、inotify服务有两个命令inotifywait和inotifywatch,主要使用inotifywait命令
3、inotify服务优化配置文件/proc/sys/fs/inotify/
max_queued_events       #==》设置inotifywait或inotifywathc命令可以监视文件数量(单进程),建议设置65535
max_user_instances      #==》设置每个用户可以运行inotifywait或inotifywatch命令的进程数,建议设置128
max_user_watches            #==》设置inotify实例事件(event)队列可容纳的事件数量,建议设置65535

Inotify优缺点

inotify优点
(1)、监控文件系统事件变化,通过同步工具实现实时数据同步

inotify缺点
(1)、并发如果大于200个文(10-100k),同步就会由延迟
(2)、我们前面的脚本,每次都是全部推送一次,但是确实是增量的,也可以只同步变化的文件
(3)、监控到事件后,调用rsync同步是单进程(加&并发)sersync多进程同步

一、Inotify安装配置
注意:Inotify只支持Linux 内核2.6.13以上的版本(包括2.6.13版本)

1、配置阿里云yum源

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum makecache

2、安装inotify工具

[root@nfs ~]# yum -y install inotify-tools
oot@nfs ~]# rpm -qa inotify-tools
inotify-tools-3.14-8.el7.x86_64

3、查看Inotify默认参数

[root@nfs ~]# ls -l /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Aug 29 18:06 max_queued_events
-rw-r--r-- 1 root root 0 Aug 29 18:04 max_user_instances
-rw-r--r-- 1 root root 0 Aug 29 18:04 max_user_watches
[root@nfs ~]# ls /proc/sys/fs/inotify/ | xargs -n 1 | awk '{print "cat","/proc/sys/fs/inotify/"$0}'| bash
16384
128
8192

4、测试

#==》Xshell打开一个窗口监测
[root@nfs ~]# mkdir /backup
[root@nfs ~]# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create /backup
29/08/19 18:18 /backup/1.txt
29/08/19 18:19 /backup/test
29/08/19 19:27 /backup/1.txt

#==》Xshell打开另外一个窗口操作
[root@nfs ~]# touch /backup/1.txt
[root@nfs ~]# mkdir /backup/test/
[root@nfs ~]# rm -f /backup/1.txt

5、把脚本放到NFS服务端监控/backup目录,如果发生变化自动通过rsync推送
标注:rsync -avz $backupdir --delete rsync_backup@10.0.0.60::backup 此传输命令过于危险,不建议使用

[root@nfs ~]# vim /server/scripts/inotify.sh 
#!/bin/bash
export RSYNC_PASSWORD=123456
backupdir=/backup/
rsync -avz $backupdir rsync_backup@10.0.0.60::backup
if [ -d $backupdir ];then
        /usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create,modify,attrib $backupdir |
 \
        while read line
                do
                        rsync -avz $backupdir rsync_backup@10.0.0.60::backup
                done
else
        exit 1;
fi
[root@nfs ~]# sh /server/scripts/inotify.sh

相关文章

网友评论

      本文标题:Inotify 服务

      本文链接:https://www.haomeiwen.com/subject/wiwnectx.html