inotify+inotify脚本

强大的异步文件系统监控机制
优点:监控文件系统事件变化,通过或同步工具实现定时数据同步
缺点:
1 并发,如果大于200个文件(10-100k)同步就有延迟
2 我们前面写的脚本每次都是全部推送一次,但确定是增量,也可以是同步变化
3 监控到事件后,调用rsync同步是单进程的,而sersync是多进程同步的
serync功能 :
1)支持通过配置文件管理
2)真正的守护进程socket
3)可以对失败文件定时重传(定是任务功能)
4)第三方的HTTP接口
5)默认的多进程rsync同步

读写分离 ==》缓解读压力,缓解主NFS压力
双主模式 ==》在同一个web中建立两个主NFS(写)缓解写压力,缓解主NFS压力

注:inotify和rsync一起使用,因为我们的定时任务最小单位是分钟,不能实时同步

function yunyum(){
#先安装wget
yum -y install wget 
#yum云搭建

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &> /dev/null
yum -y clean all &> /dev/null
yum makecache &> /dev/null
}
yum云安装 (inotify本地没有)
yum -y install inotify-tools
which inotifywait
> option
>> -r  递归查询
   -q  --quiet 少量查询
   -m  --monitor 失踪保持事件监听状态
   --format 打印使用指定的输出 类似格式字符串
   --exclude 排除某个
   --timefmt 指定时间输出格式
   -e --event   通过此参数,指定要监控的事件
------- access   被读取时间
------- modify   内容被赐u该
------- attrib   属性被修改 
------- close(close_write)不能写
------- open     打开
------- moved_to 移动到
 inotifywait -mrq --format '%w%f' -e create,close_write,delete /root/test & # & 切换到后台  
 inotifywait -mrq --timefmt'%y %m %d %H %M' --format '%T %w%f' -e create,close_write,delete /root/test

服务搭建

#!/bin/bash
#事件监控:用户上传静态数据到本地NFS共享目录,inotify实时监控本地共享目录,出现新数据,实时rsync同步到备份服务器中,达到实时备份的效果,防止数据丢失

#!/bin/bash

an1="wget"
an2=""
an3="ntpdate"
an4=""

function benyum(){
[ ! -d /media/cdrom ] && mkdir -p /media/cdrom 
mount /dev/sr0 /media/cdrom &> /dev/null
[ $? -ne 0 ] && echo "没插入光盘" && exit 1
[ ! -d /etc/yum.repos.d ] && mkdir -p /etc/yum.repos.d 
cd /etc/yum.repos.d
mv -f /etc/yum.repos.d/* /tmp/
cat > /etc/yum.repos.d/yum.repo << KOF
[local]
name=local
baseurl=file:///media/cdrom
gpgcheck=0
enabled=1
KOF
yum -y clean all &> /dev/null
yum makecache &> /dev/null
}
function yunyum(){
#yum云搭建
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo &> /dev/null
yum -y clean all &> /dev/null
yum makecache &> /dev/null
}

which $an1 $an3 &> /dev/null
[ $? -ne 0 ] && umount /dev/sr0 &> /dev/null && mount /dev/sr0 /media/cdrom &> /dev/null
if [ $? -eq 0 ];then
	yum -y install $an1 $an3 &> /dev/null 
else
	benyum
	yum -y install $an1 $an3 &> /dev/null
fi

ping -c 1 www.baidu.com &> /dev/null
[ $? -eq 0 ] && ntpdate ntp1.aliyun.com &> /dev/null || (echo "没网" && exit)
yunyum
yum -y install inotify-tools &> /dev/null

使用

path="/root/test"
#服务端ip
ip=192.168.200.111
/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete $path | while read line
do
	if [ -f $line ];then
		cd $path
		rsync -az $line --delete rsync_backup@$ip::backup --password-file=/etc/rsync.password
	else
		cd $path
		rsync -az ./ --delete rsync_backup@$ip::backup --password-file=/etc/rsync.password
	fi
done
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值