什么是inotify?

  拥有强大、粒细粒度、异步文件系统事件监控机制,监控文件系统中添加、删除、修改、移动等各种事件

  版本支持: 内核 2.6.13以上版本,inotify-tools 是实施监控的软件

  同类软件: 国人 周洋 在金山公司开发sersync

inotify环境搭建

  1. rsync服务器 rsync --daemon 已经搭建

  2. 检查客户端是否支持

uname -r                             # 检查内核版本是否大于2.6.13

ls -l /proc/sys/fs/inotify        # 检查是否有这个目录,没有支持不了

rpm -aq inotify-tools            # 检查软件是否安装

# 没安装通过 yum install -y inotify-tools 安装

# 如果这个安装不了,安装阿里的epel源

# rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm

  3. 这个软件安装了两个命令 inotifywait 和 inotifywatch

这两个命令有什么区别?

inotifywait

    在被监控的文件或目录上等待文件系统事件,执行后处于堵塞状态,适合在shell脚本中

  重要的参数: man inotifywait

  -m                 # 始终保持事件监听状态

   -e                  # 指定文件系统事件, close_write 关闭写

  # 写文件过程: 打开文件,写文件,关闭文件

  -r                   # 递归查询目录

   -q                  # 打印很少信息,只打印监控事件的信息

  --timefmt       # 格式化时间显示 %y/%m%d %H:%M

  --format        # %T %w%f   显示更改文件名格式

  inotifywatch:

    统计文件系统时间发生次数,做统计

inotify简单使用
       1. 监控
/data目录

inotifywait -mrq --timefmt '%Y/%m/%d %H:%M' --format '%T %w%f' -e create /data/

# 这个只监控 create
# delete 删除,删除并不需要打开文件; close_write 追加、修改文件、新增文件

2. 往 /data 目录下写文件,将会看到输出

如何做实时备份?

当 inotify 监控到目录触发事件,然后触发 rsync备份

写一个脚本

mkdir /server/scripts -p             # 创建脚本目录
cd /server/scripts vim realtime_rsync_nfs.sh # 创建实时备份脚本
#!/bin/bash
# realtime rsync /data to backup
# master beimenchuixue monitor_dir=/data/
backup_ip=172.16.1.15
login_user=backup_rsync
moudel_name=backup
rsync_passwd_file=/etc/rsync.password /usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $monitor_dir \
|while read file
do
/usr/bin/rsync -avz $monitor_dir --delete $login_user@$backup_ip::$moudel_name --password-file=$rsync_passwd_file
done

  

sh -x realtime_rsync_nfs.sh      # 测试

  

NFS备份可以考虑 --delete 方式,要求无差异备份

还有个命令也可以检测目录变化 watch

linux_inotify的更多相关文章

随机推荐

  1. git和github新手安装使用教程(三步入门)

    git和github新手安装使用教程(三步入门) 对于新手来说,每次更换设备时,github的安装和配置都会耗费大量时间.主要原因是每次安装时都只关心了[怎么做],而忘记了记住[为什么].本文从操作的 ...

  2. 云计算之路-阿里云上: RDS实例CPU跑满引发的故障

    今天上午 10: 40 左右,我们所使用的阿里云 RDS 实例的 CPU 突然飙高到近 100% ,造成大量数据库查询操作缓慢.超时,在这个恶劣条件下大量 memcached 缓存无法建立,这样的雪上 ...

  3. java中重载一定在一个类里面吗?

    虽然这些概念在翻译成中文的过程中,有很多不同的翻译方式但本质上只有两种说法,就是Override和Overload其中,Overload一般都被翻译成重载而Override的翻译就乱七八糟了,所谓覆盖 ...

  4. JavaScript(五)语句

    js 的语句有 表达式语句,  复合语句{}, 空语句, 声明语句 if 默认不写大括号 可以执行 紧接着的一行 do-while do{}while() while for(初始化:判断:更新){执 ...

  5. 大话python面向对象

    前言 师门中每逢成人礼就要下山历练一番,小掌门今年成人礼,下山也有一段时日.可恰逢年底,今年百姓收成都不是很好,各大店铺也很少招人,再加上学艺不精,小掌门无事可做就只能饿肚子了.后来小掌门饿的实在不行 ...

  6. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)

    工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...

  7. 循序渐进之Spring AOP(3) - 配置代理

    上一篇介绍了几种Advice(增强),并通过代码演示了生成代理的方式,下面来看通过配置文件配置方式把Advice织入目标类. 注意,配置文件方式仍然不是spring AOP的最好方式,学习配置方式也是 ...

  8. 洛谷 P1967 货车运输

    洛谷 P1967 货车运输 题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在 ...

  9. Phabricator API Go 创建task/提交文件到Phabricator

    Go Phabricator API 代码/程序创建task/提交文件到Phabricator Creat Task or upload file to phabricator with code i ...

  10. SRM13

    由于种种原因,好像出了点锅……? 好在问题不是很大. 得分比我估的要低啊. 木之本樱 计算几何送分题 就是叫你求一共有多少组四线共点,O(n^4)暴力可以过初.枚举两条线,求出交点之后求有多少条直线过 ...