inotify+rsync

servre1:10.1.1.88

server2:10.1.1.82


需要让server2实时同步server1上的代码,


server1 上操作:

1.安装inotify

tar -zxvf inotify-tools-3.14.tar.gz 

./configure && make && make install

2.链接库

64 位系统安装完毕后,报错,找不到库文件,需要做链接

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

3.配置rsync+ssh

此处略过,ssh 做互相认证

4.配置脚本

#!/bin/bash

INOT=/usr/local/bin/inotifywait

RSYNC=/usr/bin/rsync

SRC=/opt/wwwroot/

DST=/opt/wwwroot/

DST_IP=10.1.1.82

USER=root


#-- COMMAND --#

$INOT -mr --timefmt '%d/%m/%y%H:%M' --format '%T%w%f' -e modify,delete,create,attrib $SRC | while read file 

do

      $RSYNC -auvz -e 'ssh -p 22' --delete $SRC $USER@$DST_IP:$DST

done


#--- END --#

5.执行脚本

nohup sh rsync_inoti.sh &


附加:

inotifywait

语法:

inotifywait [-hcmrq] [-e ] [-t ] [--format ] [--timefmt ] [ ... ]

参数:

-h,�Chelp

输出帮助信息

@

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

�Cfromfile 

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

-m, �Cmonitor

接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。

-d, �Cdaemon

跟�Cmonitor一样,除了是在后台运行,需要指定�Coutfile把事情输出到一个文件。也意味着使用了�Csyslog。

-o, �Coutfile 

输出事情到一个文件而不是标准输出。

-s, �Csyslog

输出错误信息到系统日志

-r, �Crecursive

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

-q, �Cquiet

指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。

�Cexclude 

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

�Cexcludei 

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

-t , �Ctimeout 

设置超时时间,如果为0,则无限期地执行下去。

-e , �Cevent 

指定监视的事件。

-c, �Ccsv

输出csv格式。

�Ctimefmt 

指定时间格式,用于�Cformat选项中的%T格式。

�Cformat 

指定输出格式。

%w 表示发生事件的目录

%f 表示发生事件的文件

%e 表示发生的事件

%Xe 事件以“X”分隔

%T 使用由�Ctimefmt定义的时间格式


inotifywatch

语法:

inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]

参数:

-h, �Chelp

输出帮助信息

-v, �Cverbose

输出详细信息

@

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

�Cfromfile 

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

-z, �Czero

输出表格的行和列,即使元素为空

�Cexclude 

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

�Cexcludei 

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

-r, �Crecursive

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

-t , �Ctimeout 

设置超时时间

-e , �Cevent 

只监听指定的事件。

-a , �Cascending 

以指定事件升序排列。

-d , �Cdescending 

以指定事件降序排列。


可监听事件

access文件读取

modify文件更改。

attrib文件属性更改,如权限,时间戳等。

close_write以可写模式打开的文件被关闭,不代表此文件一定已经写入数据。

close_nowrite以只读模式打开的文件被关闭。

close文件被关闭,不管它是如何打开的。

open文件打开。

moved_to一个文件或目录移动到监听的目录,即使是在同一目录内移动,此事件也触发。

moved_from一个文件或目录移出监听的目录,即使是在同一目录内移动,此事件也触发。

move包括moved_to和 moved_from

move_self文件或目录被移除,之后不再监听此文件或目录。

create文件或目录创建

delete文件或目录删除

delete_self文件或目录移除,之后不再监听此文件或目录

unmount文件系统取消挂载,之后不再监听此文件系统


你可能感兴趣的:(rsync)