码迷,mamicode.com
首页 > 其他好文 > 详细

rsync inotifywait 自动同步

时间:2016-08-15 22:52:17      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:rsync inotifywait


参考

http://ilanni.blog.51cto.com/526870/1605200

inotify-tools与rsync集成

inotify-tools与rsync的集成主要是通过inotifywait命令与rsync命令集成来实现的,并且该集成主要是体现的rsync客户端,而rsync服务器端正需要按照正常的配置进行即可。

注意:该集成的主要目的是把rsync客户端需要备份的文件实时推送到rsync服务器上。


inotifywait命令详解

有关inotifywait的使用方法,我们可以通过它的帮助信息查看

-m表示始终保持事件监听状态。

-r表示递归查询目录。

-q表示打印出监控事件。

-e通过此参数可以指定要监控的事件。可监听的事件,如下:

access:访问,读取文件。

modify:修改,文件内容被修改。

attrib:属性,文件元数据被修改。

move:移动,对文件进行移动操作。以及重命名,对文件进行重命名。

create:创建,生成新文件

open:打开,对文件进行打开操作。

close:关闭,对文件进行关闭操作。

delete:删除,文件被删除。

--timefmt是指定时间的输出格式,用于--format选项中的%T格式。

--format指定文件变化的详细信息输出格式。格式参数如下:

%w表示发生事件的目录

%f表示发生事件的文件

%e表示发生的事件

%T使用由--timefmt定义的时间格式

%Xe事件以“X”分隔

8.2 inotifywait命令实例

8.1章节我们讲解了inotifywait命令的参数,下面我们来实际使用下inotifywait命令。

我们要监测/home目录下所有文件及目录的变化情况,命令如下:

inotifywait -mrq --timefmt ‘%y/%m/%d/%H:%M‘ --format ‘%T %w %f %e‘ -e modify,delete,create,attrib,move,open,close,access /home/


inotifywatch参数说明如下:

-h:输出帮助信息。

-v:输出详细信息。

@:排除不需要监视的文件,可以是相对路径,也可以是绝对路径。

–-fromfile:从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。

-z:输出表格的行和列,即使元素为空。

–-exclude:正则匹配需要排除的文件,大小写敏感。

–-excludei:正则匹配需要排除的文件,忽略大小写。

-r:监视一个目录下的所有子目录。

-t:设置超时时间。

-e:只监听指定的事件。该事件与inotifywait监听的事件类型一样。

-a:以指定事件升序排列。

-d:以指定事件降序排列。

inotifywatch命令实例

我们讲解了inotifywatch命令的参数,下面我们来实际使用下inotifywatch命令。

要求统计60秒内/home目录下文件系统的事件,使用如下命令:

inotifywatch -v -e modify,delete,create,attrib,move,open,close,access -e modify -t 60 -r /home

下面我们的所有操作都是在rsync客户端上进行的,其实inotifywait命令与rsync命令集成,我们所要做的只是写一个shell脚本即可

#!/bin/bash

src=/home/back/

dest=www

ip=xx

/usr/bin/inotifywait -mrq --timefmt ‘%d/%m/%y%H:%M‘ --format ‘%T %w %f‘ -e modify,delete,create,attrib $src | while read DATE TIME DIR FILE;

do

filechange=${DIR}${FILE}

/usr/bin/rsync -avz --delete --progress $src apache@$ip::$dest --password-file=/etc/rsyncd.password &

echo "At ${TIME} on ${DATE}, file $filechange was backed up via rsynce" >>/tmp/rsync.log 2>&1

done


上述脚本写好后,我们要给予其执行权限,然后配置其开机后台运行,并启动。使用如下命令:

chmod 700 inotify.sh

chmod u+x inotify.sh

ll |grep inotify.sh

echo "sh /root/inotify.sh > /dev/null &" >>/etc/rc.local

sh inotify.sh > /dev/null &


本文出自 “人,要有自己的想法” 博客,请务必保留此出处http://szgb2016.blog.51cto.com/340201/1838406

rsync inotifywait 自动同步

标签:rsync inotifywait

原文地址:http://szgb2016.blog.51cto.com/340201/1838406

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