观念的rsync+crontab同步数据和实际会有异样,而inotify则着力得以达到实时的法力,当文件有其余变动,就能够触发inotify。
inotify 是一个 Linux
内核性情,它监察和控制文件系统,况且及时向非常的应用程序发出相关的事件警报,例如删除、读、写和卸载操作等。inotify安装完毕现在会有八个指令,inotifywait

inotifywatch。inotifywait用于等待文件恐怕文件集上的贰个特定事件,能够监督任何文件恐怕目录地点,而且能够递归地监察和控制全数目录树;inotifywatch
用于搜聚被监督的文件系统计算数据,包蕴每种inotify事件爆发多少次等音信。

在上篇博文《rsync完毕Linux服务器数据同步》
http://www.linuxidc.com/Linux/2013-04/82804.htm 中,大家讲了rsync完毕公文同步的主意与特色,rsync在这里方面具有大多独特之处,但也无须全盘无缺。举例,rsync不能够实时地监察和控制数据变动,来完成实时黄金时代并的指标,固然能够行使安插职责的方法依期触发同步,但四回接触动作一定会有的时候间差,对于实时性供给高的条件,那是不行选择的。另外,rsync每回开头时都亟待扫描目录里面包车型地铁具有文件,然后开展差量传输,要是目录里面包车型大巴文本达到十万,甚至百万等级时,整个操作将那些耗费时间,而发生变更的或是只是中间的意气风发七个公文,那样确实是极低成效的作为。

条件需要:inotify必要系统基本版本为2.6.13之上**

安装
cd /tmp
wget

–no-check-certificate
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure&&make&&make install

在摸底了rsync
的美中不足后,大家再来领会一下inotify。Inotify是linux系统本人的生龙活虎种文件系统事件的监察体制,通过它可以监察和控制到文件系统的变迁,如:添加、删除、修改等种种细微的动作。利用那几个底蕴接口,第三方软件能够监督文件系统下文件的各个变动意况,Inotify-tools就是这么大器晚成款软件,当它与rsync结合使用时,能够弥补rsync所存在的劣势,达到最佳的职能。

务求redhat系统必得为5.0以上

ln -sv /usr/local/lib/libinotify* /usr/lib/
ln -s /usr/local/lib/libinotifytools.so.0
/usr/lib64/libinotifytools.so.0

操作蒙受如下,服务器A的/data目录为源,对中间的剧情做任何更新都将即时同步到B和C服务器中的/test目录。

# vim /tmp/mon.sh
#!/bin/bash

图片 1

软件必要:inotify-tools-3.14.tar.gz**

src=/tmp/test/ # directory to monitor
/usr/local/bin/inotifywait -rmq  -e modify $src |  while read  event
do
echo “hello” >> 1.txt
done

服务器B和C的 rsync.conf配置:

mutt-1.5.21.tar.gz

做成开机运维
chmod u+x /tmp/mon.sh
echo “nohup /bin/bash /tmp/mon.sh &” >> /etc/rc.d/rc.local
nohup /bin/bash /tmp/mon.sh &


msmtp-1.4.30.tar.bz2

此刻只要/tmp/test/意气风发有改观,在会触发inotifywait,运营echo命令。

uid=root   
gid=root   
use chroot=no                   
max connections=20               
strict mode =yes                 
pid file=/var/run/rsyncd.pid     
lock file=/var/lock/rsync.lock   
log file=/var/log/rsyncd.log     

落到实处结果:通用监控钦定目录中文件的增减改等操作,并把操作的动作发到钦命邮箱通告

图片 2

[model1]                       
path=/data/                     
comment=Test             
ignore errors                 
read only=no                     
write only=no                   
hosts allow=192.168.0.10         
hosts deny=*                     
list=false                                       
auth users=alex                 
secrets file=/etc/rsyncd.pass     


**步骤:**

铺排完毕后,运营服务器的rsync守护,并将rsync服务步入到自运营文件中。
echo “/usr/local/bin/rsync –daemon “>> /etc/rc.local
注:关于rsync配置的事必躬亲介绍,可参看小编博客中上风姿洒脱篇的rsync博文。

1.安装inotify**

 

wget

 

tar-zxvfinotify-tools-3.14.tar.gz

服务器A上设置配备inotify-tools工具:
注:linux内核版本须求高于2.6.13技能协理inotify性情。

cdinotify-tools-3.14

  1. 下载安装inotify-tool工具
    wget

    tar zxvf inotify-tools-3.14.tar.gz
    cd  inotify-tools-3.14
    ./configure –prefix=/usr/local/inotify-tools-3.14/
    make
    make install
    ln -s /usr/local/inotify-tools-3.14/  /usr/local/inotify
    设置完inotify-tools后,会生成inotifywait和inotifywatch多少个指令。此中,inotifywait用于等待文件或文件集上的二个一定事件,可以监督任何文件和目录设置,何况能够递归地监察和控制整个目录树;inotifywatch用于搜聚被监督的文件系统总计数据,满含种种inotify事件发生多少次等消息。

  2. 增加联合进行目录
    mkdir  /data

./configure–prefix=/usr/local/inotify

3.增添密码文件
vi /etc/rsyncd.passwd
123456

make&&makeinstall

4.开立脚本:

安装到位后生成/usr/local/inotify/bin/inotifywait及/usr/local/inotify/bin/inotifywatch命令,inotifywait用来监督文件系统的更换,inotifywatch用来总结改过文件系统事件。

vi  inotify.sh

#!/bin/bash
host1=192.168.0.20
host2=192.168.0.30
src=/data
dst=/test
user=alex
/usr/local/inotify/bin/inotifywait -mrq –timefmt ‘%d/%m/%y %H:%M’
–format ‘%T %w%f%e’ -e modify,delete,create,attrib /apps/apk_update/ |
while read files
do
/usr/bin/rsync -vzrtopg –delete –progress 
–password-file=/etc/rsyncd.passwd  $src $user@$host1::$dst

/usr/bin/rsync -vzrtopg –delete –progress 
–password-file=/etc/rsyncd.pass  $src $user@$host2::$dst

echo “${files} was rsynced” >> /tmp/rsync.log 2>&1
done


inotifywait的相干参数:
-m 即 –monitor ,表示从来维持事件监听状态;
-r  即 –recursive,表示递归查询目录
-q 即 –quiet ,打字与印刷出监察和控制事件
–timefmt,指如时期的出口格式
–format,钦命变化文件的详细新闻

5.开发银行脚本
sh inotify.sh &
最终,将些脚本参预动和自动运营文件
echo “sh inotify.sh &” >> /etc/rc.local

图片 3

Inotifywait参数**

-m–monitor##生龙活虎味监察和控制

-r–recursive##递归

-q–quiet##打字与印刷监察和控制事件

-e–event##提议要监督的平地风波,有:modify,delete,create,attrib等

–timefmt##岁月格式

–format##转变文件的详细音信

详细参数请查看

inotify测试**

动用inotifywait-mrq–timefmt’%d/%m/%y%H:%M’–format’%T%w%e’-emodify,delete,create,attrib监察和控制/data目录,然后在/data下创办八个文本,看看是否有变动

/usr/local/inotify/bin/inotifywait-mrq–timefmt’%d/%m/%y%H:%M’–format’%T%w%e’-emodify,delete,create,attrib/data

16/02/1311:01/data/CREATE

16/02/1311:01/data/MODIFY

echo”notifydatatest…”>/data/test.bat

意气风发经测验败北,请查看系统的木本版本(uname–a)是还是不是适合供给**

2.安装mutt+msmtp**

[[email protected]~]#tar-jxvfmsmtp-1.4.30.tar.bz2

[[email protected]~]#cdmsmtp-1.4.30

[[email protected]]#./configure–prefix=/usr/local/msmtp

[[email protected]]#make

[[email protected]]#makeinstall

[[email protected]~]#tar-zxvfmutt-1.5.21.tar.gz

[[email protected]~]#cdmutt-1.5.21

[[email protected]]#./configure–prefix=/usr/local/mutt

[[email protected]]#make

[[email protected]]#makeinstall

Msmtp+mutt配置

[[email protected]]#mkdir-p/usr/local/msmtp/etc

[[email protected]]#vi/root/.msmtprc

hostmail.yylog.org#smtp地址

tlsoff

authplain

[email protected]

userzbill

password123456789

[[email protected]]#vi/root/.muttrc

setsendmail=”/usr/local/msmtp/bin/msmtp”#钦命msmtp安装地方

setuse_from=yes

[email protected]

setenvelope_from=yes

[[email protected]]#vi/usr/local/msmtp/etc/msmtprc

defaults

accountzbill

hostmail.yylog.org

[email protected]

authlogin

port25

tlsoff

[email protected]

password123456789

accountdefault:zbill

logfile/usr/local/msmtp/log/msmtp.log

[[email protected]]#mkdir-p/usr/local/msmtp/log

[[email protected]]#echo’setsendmail=”/usr/local/msmtp/bin/msmtp”‘>>/etc/Muttrc

[[email protected]]#echo”setuse_from=yes”>>/etc/Muttrc

[[email protected]]#echo’setrealname=”[email protected]”‘>>/etc/Muttrc

[[email protected]]#echo’seteditor=”vim”‘>>/etc/Muttrc

[[email protected]]#ln-s/usr/local/msmtp/bin/msmtp/usr/bin

邮件发送测验

发觉发送报错

图片 4

可能是筛选的出殡邮箱的邮件服务器有毛病,换来smtp.163.com后测量试验发送正常

[[email protected]]#/usr/local/mutt/bin/mutt-s”test”[email protected]</.sh/1.sh

发觉未接纳邮件,查看系统版本cat/etc/issue为redhat4.6,于是换了台redhat5.2的系统测量试验发送成功了,所以要静心系统版本难题

3.配置mutt+msmtp+inotify**

编写监察和控制脚本

Vi**monitor.sh**

#!/bin/bash

clear

src=/root/a//督察的目录**

/usr/local/inotify/bin/inotifywait-m-r-d-o/tmp/monitor.log–timefmt’%F%T’–format’%T%w%f%e’-emodify,attrib,move,close_write,create,delete,delete_self$src

编辑发送邮件脚本

Visendmail.sh

#!/bin/bash

clear

path_f=/tmp/monitor.log

[email protected]

functionmutt_send()

{

/usr/local/bin/mutt-s”WARN”-c$email<$path_f

}

if[-s$path_f];then

echo”mailsend…….”;sleep1

/usr/local/bin/mutt-s”WARN”-c$email<$path_f

fi

cat/dev/null>$path_f//发完邮件有对文件举行清空**

(在进行脚本./sendmail.sh的时候会有报错:-bash:./file.sh:/bin/bash^M:badinterpreter:Nosuchfileordirectory**

谬误原因很有相当大恐怕是您的脚本文件是DOS格式的,即每生龙活虎行的行尾以\r\n来标志,其ASCII码分别是0x0D,0x0A.

查看脚本格式:setff?会显示fileformat=dos使用setff=unix更正格式重新推行就能够)**

后台运转监督脚本

nohup/bin/bash/root/monitor.sh&

把发送邮件的剧本参预安顿

Crontab–e

*/5****/bin/bash/root/sendmail.sh

保留退出同等对待启服务

/etc/init.d/crondrestart

测试:

[[email protected]~]#cd/root/a

[[email protected]]#ls

123abcrf

[[email protected]]#rm-f*

[[email protected]]#cat/tmp/monitor.log

2013-07-1904:40:04/root/a/123DELETE

2013-07-1904:40:04/root/a/abcDELETE

2013-07-1904:40:04/root/a/rfDELETE

[[email protected]]#cd

[[email protected]~]#./sendmail.sh

mailsend…….

[[email protected]~]#cat/tmp/monitor.log

[[email protected]~]#

图片 5

:inotify必要系统基本版本为2.6.13以上
供给redhat系统必须为5.0之上 软件须要 :inotify-tools-3.14.tar.gz
mutt-1.5.21.tar.gz msmtp-1.4.30.tar.bz2 实现…

相关文章