linux_inotify
什么是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的更多相关文章
随机推荐
- linux无密码连接
先确保所有主机的防火墙处于关闭状态. 在主机A上执行如下: 1. $cd ~/.ssh 2. $ssh-keygen -t rsa -----然后一直按回车键,就会按照默认的选项将生成的密钥保存在. ...
- webapi框架搭建-日志管理log4net
前言 本篇讲怎么在前几篇已经创建好的项目里加上日志处理机制,我们采用Log4net技术.跟多的log4net技术的细节请查阅log4net的官网. log4net官网:http://logging.a ...
- 搭建LNMP;搭建WIKI
#!/bin/bash#lnmp搭建#搭建WIKI 1.系统检测,系统环境优化 搭建版本: nginx-1.8.1.tar.gzmysql-5.5.32-linux2.6-x86_64.tar.gzl ...
- 从零开始开发一个简易的类vue-cli构建工具
代码地址:https://github.com/cheer4chai/webpack-learning 仿照vue-cli开发这个工具的目的是了解webpack的基本设置,以及vue-cli的工作原理 ...
- 使用redis设计一个简单的分布式锁
最近看了有关redis的一些东西,了解了redis的一下命令,就记录一下: redis中的setnx命令: 关于redis的操作命令,我们一般会使用set,get等一系列操作,数据结构也有很多,这里我 ...
- Unity3d 5.x AssetBundle打包与加载
1.AssetBundle打包 unity 5.x版本AssetBundle打包,只需要设置好AssetBundle的名称后,unity会自动将其打包,无需处理其他,唯独需要做的是设置好个AssetB ...
- Error:C:\Users\issuser\AndroidStudioProjects\SQLiteDemo1\.gradle\buildOutputCleanup\cache.properties (系统找不到指定的文件。)
android studio报下图中的这个错误的解决办法: 解决办法: 1.删除掉下图中标记的2个文件夹 2.将下图标记的文件的文件名重命名,把最后的后缀.lock去掉,因为加上了这个后缀,所以提示找 ...
- sso示例代码
个人写的一个关于在ASP.NET 中如何实现SSO单点登录,这可能也是.NET实现大型互联网项目的第一步要解决的问题.已经放到GitHub上供大家参考.https://github.com/bidia ...
- python函数高级特性
掌握了Python的数据类型.语句.函数,基本可以编写出很多有用的程序了.但是Python中,代码不是越多越好,而是越少越好.代码不是越复杂越好,而是越简单越好.基于这一思想,我们来介绍python中 ...
- laravel ORM 命令2
一.查询 获取数据库所有数据 Model::all() 获取指定条件数据 Modle::where('status','1')->get() 获取第一条数据 Model::where('stat ...