【inotify事件监控工具】
inotify事件监控工具
1、①inotify是干啥的 ②为什么要用它 ③它是通过什么方式来保障存储数据安全的?
2、 Yum安装inotify-tools步骤:
which wget
yum -y install wget
wget -O /etc/yum.repos.d/epel.repo http://files.tttidc.com/centos6/epel-6.repo
ls /etc/yum.repos.d/ 显示epel-6.repo证明下载成功
yum -y clean all
yum makecache
yum -y install inotify-tools 安装inotify-tools
rpm -qa inotify-tools 显示inotify-tools已安装则正常
which inotifywait 显示inotifywait已安装则正常
3、inotifywait监控命令 用法:
参数:m 守护进程(不写m则不持续输出,即仅监控并输出一次,就跳出监控动作),
r 递归,
q 简化输出 一般mrq联用,即持续监控目录即下属所有内容的变动b并输出到屏幕
--exclude 排除文件或目录时,不区分大小写
--timefmt 指定时间输出的格式
--format 指定输出格式 ,常与%T %w %f
-e 后边加具体事件。通过此参数可以指定需要监控的事件(Events),如下所示:
access 文件或目录被读取
modify 文件或目录内容被修改
attrib 文件或目录属性被改变
open 文件或目录被打开
moved_to 文件或目录被移动至另外一个目录
delete 文件或目录被删除
umount 文件系统被卸载
move 文件或目录被移动到另一个目录或从另一个目录移动至当前目录
create 文件或目录被创建在当前目录
close 文件或目录封闭,无论读/写模式 (常用组合close_write,即修改。注意:创建也是一种修改,故create和close_write联用时,即使只创建一个文件,会在监控记录里输出二次,文件并没有多,只是输出了一次创建,又输出了一次修改,工作中做好区分;create,close_write,delete即监控所有形式的变化)
%T 时间,对应 %y %m %d %H %M 年 月 日 时 分
%w 路径
%f 文件名
实操:例3.1、实时监控本地数据变化,输出时带时间(带时间参数)
①mkdir -p /backup 在本机创建/backup目录
②inotifywait -mrq --timefmt '%y %m %d %H %M' --format '%T %w%f' -e create,close_write,delete /backup/ 持续监控本机/backup目录下所有内容的创建,修改,删除记录,如有变化实时输出到屏幕上
③再把本机当前主xhell窗口复制一个新窗口,在新窗口操作
cd /backup,
touch {1..3}
④再回到主窗口中,发现已实时输出新增文件这个变动
(同理,在第③步新窗口中删除主机/backup下某文件,第④步也会实时输出变动情况)
例3.2、实时监控本地数据变化,输出不带时间(不带时间参数)
前提:配置好/etc/rsyncd.conf 并开启rsync,详见p88 三、服务器(监听)模式
cd /backup 进入到主机窗口/backup目录
inotifywait -mrq --format '%w%f' -e create,close_write,delete /backup/
touch 1.txt 再到另一个新xshell窗口新建文件
主机窗口显示/backup/1 此时主机窗口以不带时间输出此格式的路径,完毕。
3.3、将本地模式下的/back 和/back2进行监控同步
①mkdir -p /backup2 在客户端主机下创建/backup2目录
mkdir -p /service/scripts
cd /service/scripts
vim inotifywait.sh
#!/bin/bash
/usr/bin/inotifywait -mrq --format '%w%f' -e -create,delete,close_write /backup | while read line
do | 将左边的数据传给while,通过read从屏幕输入给变量line
cd /backup
rsync -az ./ /backup2 --delete
done 保存退出
sh inotifywait.sh 开始监控/back,一旦变化就传给/backup2
②下边用xshell复制新建2个ssh渠道,并分以下操作:
cd /backup 进入客户端主机窗口并进入/back目录
touch abc 创建3个文件
ls /backup2发现/backup下的3个文件已同步到/backup2下,则成功。
3.4、socket监听模式 (服务器模式)①②③④⑤⑥⑦⑧⑨⑩
服务部署:写一个脚本,用rsync做一个程序监听873服务端口,其他客户端把数据推进服务端口,rsync会自动保存。(客户端可以有多个,不用指定哪个目录,推进端口就行)
3.4.1、配置server服务端:
①vim /etc/rsyncd.conf 写rsync的配置文件,原本没有需要自己写
uid = rsync 可用此服务的账号是rsync
gid = rsync 组账号是rsync
use chroot = no 安全设置:不可以更改root权限
max connections = 200 最大支持连接200个客户端
timeout = 300 连接超时时间300秒
pid file = /var/run/rsyncd.pid pid文件保存位置
lock file = /var/run/rsync.lock 文件锁
log file = /var/log/rsyncd.log 日志保存位置
############################# 以上是全局生效参数,以下是模块参数
[backup] 模块名称
path= /backup/ 将模块的存储路径设为/backup
ignore errors 忽略出现的错误错误
read only = false 关闭只读,即可以读写
list = false 关闭客户端查看服务端的权限,即禁止客户端查看服务端
hosts allow=192.168.71.0/24 允许推送到服务端的客户端的网段范围
hosts deny = 0.0.0.0/32 掩码32,即4个255,不拒绝任何ip地址
auth users = rsync_backup 建虚拟账号rsync_backup推数据时须身份验证
secrets file = /etc/rsync.password 设定存放密码文件的位置 保存退出
(需要在此路径下创建1个文件,用于存放虚拟账户rsync_backup的密码)
②useradd -M -s /sbin/nologin rsync 创建程序用户rsync
③mkdir /backup 创建指定存放目录,ll -d /backup已存在则正确
④vim /etc/rsync.password 创建存放密码的文件rsync.password
rsync_backup:123456 以 账户名:密码 的格式保存密码 保存退出
⑤chmod 600 /etc/rsync.password 必须把密码文件权限设为600,高了执行不了,且因有密码禁止其他用户查看
ll /etc/rsync.password 查看密码文件权限是否修改成功
⑥ll -d /backup 数据存储目录的属主和属组都是root即权限为755;而rsync是程序用户权限,客户端将数据推进端口后,服务端rsync会收到数据然后写入/backup中,意味着rsync程序应具备写权限而现在写不了,因此要修改/backup目录的属主
chown rsync /backup 将/backup目录的属主更改为rsync,rsyc才能把传入的数据写进此目录
rsync -–daemon 启动(ps -ef | grep -v grep | grep rsync查是否运行)
netstat -antup | grep 873 打开监听模式,rsync默认监听873端口
cd /backup 转到服务端根下的backup目录
rm -rf * 清空数据目录 此时服务端已配完
3.4.2、配置client客户端,并按需选择以下方案执行:
方案-:本地增量同步(需要密码):
cd /backup/ 转到客户端根下的backup目录
touch {1..10} 创建10个文件
rsync -avz /backup/ rsync_backup@192.168.71.131::backup
123456 输入之前配置好的虚拟账户rsync_backup的密码123456 显示同步成功(此模式rsync将客户端/backup下的数据推进到192.168.71.131服务器的873端口的/backup模块下,再由这个模块转到指定目录下)
方案二:本地免密码完全增量同步:既要免密码,又要完全增量同步(使二台机器内容完全同步)
cd /backup/ 转到客户端根下的backup目录
vim /etc/rsync.password 想免密码,在客户端/backup下也须创建密码文件
123456 密码文件内只需要写密码就行,须和服务端创建的虚拟账户密码一致
chmod 600 /etc/rsync.password 将密码文件权限设为600 可用ll验证
touch 1 2 3 在服务端/backup下创建2 3 4 共3个文件
touch 2 3 4 在客户端/backup下创建2 3 4 共3个文件
rsync -avz /backup/ rsync_backup@192.168.71.133::backup --password-file=/etc/rsync.password --delete 免密码完全增量同步(你没有我给你,我没有我给你删掉,让咱俩都一样)
ls /backup 分别在客户端与服务端查看此目录,显示2 3 4共3 个文件,文件已完全增量同步
方案三:用inotify脚本配合rsync监听模式(第三种)下免密码完全增量同步:写个脚本,既要监听模式,又要免密码,又要完全增量同步(使二台机器内容完全同步),免密同步方便将rsync功能写入脚本。
mkdir -p /service/scripts 创建存放脚本的目录
cd /service/scripts 进入存放脚本的目录
vim inotifywait.sh 创建脚本编辑以下内容:
#!/bin/bash
#已知服务端ip为192.168.71.133
/usr/bin/inotifywait -mrq --format '%w%f' -e create,delete,close_write /backup | while read line
do | 将左边的数据传给while,通过read从屏幕输入给变量line
cd /backup
rsync -az ./ –delete rsync_backup@192.168.71.133::backup
--password-file=/etc/rsync.password
done 保存退出
chmod +x inotifywait.sh 给脚本加上x执行权限;
用xshell复制一个客户端新窗口并cd /service/scripts目录,然后在服务端窗口cd /backup目录,然后回到主窗口执行下列操作:
sh inotifywait.sh 在主窗口执行脚本,开始监控客户端和服务端下各自下边的/backup目录,一旦变化就相互完全增量同步,但并不输出到屏幕,需要自己手动查
cd /backup 进入客户端主机窗口的/backup目录
touch 1 2 3 在服务端/backup下创建2 3 4 共3个文件
touch 2 3 4 在客户端/backup下创建2 3 4 共3个文件
ls /backup 分别在客户端与服务端查看此目录,显示2 3 4共3 个文件,文件已完全增量同步
方案四:将3.4.1配置server服务端与方案3写入脚本,vim inotifywait2.sh按照教案操作
注意:1、服务端和客户端的防火墙都关掉,避免连接失败 2、避免写错内容导致执行失败
【inotify事件监控工具】相关推荐
- inotify事件监控
一.原理: inotify事件监控,可以监控文件系统中添加,删除,修改,移动等各种事件,一旦发现数据彼此不同,会通知rsync同步推送数据.inotify + rsync可以时时同步 二.准备工作 1 ...
- ajax跨界表单,ajax使用jsonp解决跨域问题
ubuntu环境配置 网络配置 主要文件:/etc/network/interfaces,这里是IP.网关.掩码等的一些配置: # This file describes the network in ...
- SSH连接原理及ssh-key
2019独角兽企业重金招聘Python工程师标准>>> Linux实战教学笔记24:SSH连接原理及ssh-key 目录 第二十四节 SSH连接原理及ssh-key讲解 第1章 SS ...
- linux 高效的文件系统事件监控 内核级解析方案 inotify
转载 http://www.lvtao.net/config/inotify.html linux 高效的文件系统事件监控 内核级解析方案 inotify 安装inotify-tools (http: ...
- linux inotify 监控文件系统事件
1. Inotify 机制概述 1.1. Inotify 介绍 在日常的运维过程中,经常需要备份某些文件,或者对系统的某些文件进行监控,比如重要的配置文件等.如果需要作到实时同步或者监控,就需要使用内 ...
- Linux下同步工具inotify+rsync使用详解
1. rsync 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的"Rsync演算法"来使本地和远程两个主机之 ...
- (openssh、telnet、vsftpd、nfs、rsync、inotify、samba)
(openssh.telnet.vsftpd.nfs.rsync.inotify.samba) 一:OpenSSH服务与Telnet服务(必须掌握) 前言:OpenSSH是加密传输,Telnet是明文 ...
- Linux平台上文件同步——rsync+inotify之定时同步
1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地定时同步和远程定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...
- Linux平台上文件同步——rsync+inotify之实时同步
1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地实时同步和本地定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...
最新文章
- php 正确的输出json格式
- R语言window函数提取时序数据数据子集(subset):使用xts包将dataframe数据转化为时间序列数据(time series)、使用window函数从时间序列对象中提取数据子集
- 全志代码中的bug之2
- 云计算数据管理的4个关键因素
- python easygui进度条_Python _easygui详细版
- 混合多云架构_使用混合多云每个人都应避免的3个陷阱(第3部分)
- last_kmsg和ram console
- 跟我师兄聊天引发的思考
- 你看,公司状告员工不加班,居然还告赢了
- sql between的用法的意思_SQL 宝典——SQL 语法速成手册
- AttributeError: module 'labelme.utils' has no attribute 'draw_label'
- linux雨滴桌面,Rainmeter(雨滴桌面秀)
- 原来,神文竟然是汉字
- 蓝桥杯单片机数码管技巧
- 知识分享 | 什么是CAN线波特率
- 2020年chx的计算机保研之路系列(2)——华东师范大学计算机学院(获得优营)
- linux色彩配置文件,Xfce得到颜色配置文件的支持
- 什么命令能查看服务器的型号,查看服务器型号的命令
- 《web开发: Ajax 介绍》
- DSP在SYS/BIOS下串口(UART)接收之环形队列