码迷,mamicode.com
首页 > 系统相关 > 详细

Linux 期中架构 inotify

时间:2018-05-10 11:12:45      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:etc   方式   epel   依赖包   backup   暂停   基于   shell脚本   数据   

 

 

 

 

全网备份数据同步方案
备份网站内部人员信息 不能解决外部(人员)上传数据的备份
定时任务最短执行的周期为一分钟,采用定时任务方式,有时可能造成一分钟内的数据丢失
因此需要采用实时同步的方案

技术分享图片

 

实现实时同步的技术手段:
1-->inotify+rsync
2-->sersync
1)inotify 对同步数据目录信息的监控
2)rsync 完成对数据信息的实时同步
3)1)inotify+rsync 利用脚本进行结合

技术分享图片

 


inotify 安装在nfs上 哪台需要监控就安装在哪台主机上

 

技术分享图片

 

 

 

技术分享图片

 


03. 实现实时同步的技术手段
inotifywait 在被监控端的文件或目录上等待特定的文件系统事件 执行后处于阻塞状态
inotifywatch 统计文件数据信息变化的数量

1)inotify+rsync
第一个里程:部署数据监控服务(inotify)
1)安装inotify软件(检查是否安装)
yum install inotify-tools -y --- 基于epel源(/etc/yum.repos.d/ 源文件保存目录)
技术分享图片

 


rpm -qa inotify-tools
2)应用inotify软件
/usr/bin/inotifywait --- 实现数据实时监控命令(重要)
在被监控端的文件或目录上等待特定的文件系统事件 执行后处于阻塞状态
语法:命令 参数 事件 监控目录

技术分享图片

 

 

技术分享图片

 

技术分享图片

 


重要参数
-m|--monitor --- 始终保持监视状态,默认对目录只监视一次
-r --- 表示进行递归监控(目录1/目录2/目录3/file)
-q|--quiet --- 将没有信息不要输出在屏幕上显示 &>/dev/null
--timefmt <fmt> --- 时间格式信息(date)
--format --- 输出内容的格式信息
-e --- 指定监控的事件信息(如果不指定此参数,表示所有事件都监控)

利用inotifywait命令指定监控事件
inotifywait -mrq /data/ --- 实现数据监控最重要的三个参数
inotifywait -mrq --timefmt "%F" --format "%T %w%f 事件信息:%e" /data/ ---详细监控命令
inotifywait -mrq /data/ --只监控一次

创建1个文件的逻辑?
删除1个文件的逻辑?
删除目录逻辑?

重命名一个文件,会触发什么事件?
2018-05-09 /data/file01 事件信息:MOVED_FROM
2018-05-09 /data/file10 事件信息:MOVED_TO

sed命令替换文件信息原理过程:sed -i ‘s#123#321#g‘
2018-05-09 /data/file10 事件信息:OPEN
2018-05-09 /data/sedRSK9Gs 事件信息:CREATE
2018-05-09 /data/sedRSK9Gs 事件信息:OPEN
2018-05-09 /data/file10 事件信息:ACCESS
2018-05-09 /data/sedRSK9Gs 事件信息:MODIFY
2018-05-09 /data/sedRSK9Gs 事件信息:ATTRIB
2018-05-09 /data/sedRSK9Gs 事件信息:ATTRIB
2018-05-09 /data/file10 事件信息:CLOSE_NOWRITE,CLOSE
2018-05-09 /data/sedRSK9Gs 事件信息:CLOSE_WRITE,CLOSE
2018-05-09 /data/sedRSK9Gs 事件信息:MOVED_FROM
2018-05-09 /data/file10 事件信息:MOVED_TO


/usr/bin/inotifywatch --- 实现数据变化统计命令

inotifywait -mrq --format "%w%f" -e create,close_write,delete,moved_to /data/
-e create 指定监控事件
技术分享图片

 

技术分享图片

 

技术分享图片

 技术分享图片

 

技术分享图片

 

技术分享图片

 


man stftime 显示查看时间定义变量信息

第二个里程:部署rsync守护进程模式(ok)
服务端部署流程:
01. 检查软件是否安装
02. 编写配置文件
03. 创建虚拟用户
04. 创建备份目录,并进行授权
05. 创建密码认证文件,并授权为600
06. 启动rsync守护进程服务
客户端部署流程:
01. 检查软件是否安装
02. 创建密码文件,并进行授权
03. 进行数据推送测试
rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password

第三个里程:利用脚本将inotify与rsync服务进行结合
使用方法:inotifywait -mrq --format "%w%f" -e create,close_write,delete,moved_to /data/

vim /server/scripts/inotify.sh
#!/bin/bash

inotifywait -mrq --format "%w%f" -e create,close_write,delete,moved_to /data/|\
while read line
do
rsync -avz $line rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done

初步完善后脚本:
#!/bin/bash
inotifywait -mrq --format "%w%f" -e create,close_write,delete,moved_to /data/|\
while read line
do
rsync -az --delete /data/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
done
sh -x inotify.sh 查看1个脚本做了什么
--delete 无差异同步

循环方法总结:
01. for循环 指定一个循环条件范围,终归有结束的时候
02. while循环 指定一个循环条件,当条件满足时(为真),就会一直循环下去(死循环)
03. until循环 指定一个循环条件,当条件不满足时(为假),就会一直循环下去(死循环)
技术分享图片

 

技术分享图片

 


ctrl+z --- 暂停一个运行中的脚本进程

kill killall pkill
pkill -f "inotify.sh" --- -f参数表示把进程中参数信息也定义为进程名 任意字符串都可以

总结:
杀手三人组只能杀死正在运行的进程 不能杀死一个暂停的进程 运行中的进程可以杀死
kill killall pkill --- 可以杀死一个暂停的进程
kill -9 进程号 --- 肯定可以杀死一个暂停的进程
慎用,因为kill -9杀进程,可能造成服务无法再次运行
jobs --- 显示在后台运行的进程或暂停的进程信息
[1]+ Stopped sh -x inotify.sh
fg 1 --- 将后台运行的进程放在前台执行,恢复一个暂停进程继续运行
bg ---后台运行进程拿到前台了
fg ---前台运行进行
sh /server/scripts/inotify.sh & 脚本运行在后台
让脚本程序在后台运行的方法
1)sh inotify.sh &
2) nohup sh inotify.sh &
3) 思考screen命令实现脚本后台运行

2)sersync
第一个:安装sersync软件
https://github.com/wsgzao/sersync



安装软件方式:
01. yum安装软件
02. 二进制的安装方式(绿色软件)
03. 编译安装






04. inotify软件概念介绍
Inotify是一种强大的,细粒度的。异步(队列机制)的文件系统事件监控机制,
linux内核从2.6.13起,加入了Inotify支持,
通过Inotify可以监控文件系统中添加、删除,修改、移动等各种事件

05. inotify软件优化说明 通过man proc 获得得到
优化内核文件信息
在/proc/sys/fs/inotify/目录下有三个文件,对inotify机制有一定的限制
max_user_watches: 设置inotifywait或inotifywatch命令可以监视的文件数量(单进程)
8192
max_user_instances: 设置每个用户可以运行的inotifywait或inotifywatch命令的进程数
128
max_queued_events: 设置inotify实例事件(event)队列可容纳的事件数量--比如增加修改删除都是事件
16384
echo "echo "65535" >/proc/sys/fs/inotify/max_user_watches" >>/etc/rc.local
echo "echo "512" >/proc/sys/fs/inotify/max_user_instances" >>/etc/rc.local
echo "echo "65535" >/proc/sys/fs/inotify/max_queued_events" >>/etc/rc.local

06. sersync软件特点概念介绍
1)有相应配置文件的---不用编写shell脚本
2)是采用守护进程方式启动的
3)部署应用简单

扩展:
yum知识说明--centos系统:
1) yum安装软件方式
和rpm -ivh安装软件命令对比
yum安装软件可以解决软件之间的依赖关系
rpm安装软件:只能安装指定的软件,不会安装依赖包
2)编译安装软件
3)利用二进制包方式安装
采用绿色版本软件安装
什么是绿色软件:下载后就是一个压缩包 生成目录 可以直接运行

使用yum安装软件条件:
1)具有yum仓库: 存储所有软件的仓库
2)具有yum源文件: 利用yum源文件决定使用哪个yum仓库进行软件下载

yum源文件存储位置/etc/yum.repos.d/:
base 基础
epel.repo
输入命令 yum repolist:显示本台主机可用的yum可用信息

 

Linux 期中架构 inotify

标签:etc   方式   epel   依赖包   backup   暂停   基于   shell脚本   数据   

原文地址:https://www.cnblogs.com/nodchen/p/9017791.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!