标签: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可用信息
标签:etc 方式 epel 依赖包 backup 暂停 基于 shell脚本 数据
原文地址:https://www.cnblogs.com/nodchen/p/9017791.html