注:

1、以下为编写脚本前做的测试,用于收集一个操作产生哪些事件,合并一些多余的事件,然后再触发rsync进行同步,减少资源的占用

2、起初的inotifywait参数比正式脚本中要少(因后期修改脚本bug中添加)

========================================================================================


1、对于大文件创建,如果使用create事件创建,会导致文件还没有创建完,就开始传输,所以使用事件close_write(可以捕捉CLOSE_WRITE,CLOSE),例:

/t/1.h CLOSE_WRITE,CLOSE

rsync -ulDtpog -e ssh /tmp/rs/filename 192.168.2.120:/tmp/rs



2、SHELL 下文件重命名,使用事件moved_to(捕捉MOVED_TO),例:

/t/txt00mv MOVED_TO

rsync -ulDtpog -e ssh /tmp/rs/filename 192.168.2.120:/tmp/rs



3、目录的创建,使用create(捕捉CREATE,ISDIR用于和文件创建区分,不递归传输),例:

/t/d1 CREATE,ISDIR

注意:SRC目录名无"/"

rsync -ulDtpog -d -e ssh /tmp/rs/dirname 192.168.2.120:/tmp/rs


4、目录重命名,使用moved_to(捕捉MOVED_TO,ISDIR,递归传输),例:

/t/dir2 MOVED_TO,ISDIR

注意:SRC无"/"

rsync -ulDtpog -r -e ssh /tmp/rs/dirname 192.168.2.120:/tmp/rs


5、文件修改元数据无操作,因为使用cp -af时也会产生很多attrib(虽然需要同步,但是如果存在大文件会出现1种介绍的问题),所以不对文件的元数据变动产生事件相关的操作。


6、目录修改元数据,使用attrib(捕捉/t/b ATTRIB,ISDIR)

/t/b/ ATTRIB,ISDIR

/t/b ATTRIB,ISDIR #可以使用这个事件当作脚本调用的信号

两种情况:

一种是无递归修改:配合rsync使用时不递归,使用-d选项,注意dirname无"/"

rsync -ulDtpog -d -e ssh /tmp/rs/dirname 192.168.2.120:/tmp/rs

另一种是递归修改:注意dirname无"/"

rsync -ulDtpog -r -e ssh /tmp/rs/dirname 192.168.2.120:/tmp/rs

但是如果再对目录是否递归做判断又太繁琐,所以直接使用第二种:

rsync -ulDtpog -r -e ssh /tmp/rs/dirname 192.168.2.120:/tmp/rs


注:未列出的说明已经包含在其中某一操作,产生的事件相同。


7、FTP文件重命名,加个判断吧……

/t/1.txtt CREATE

/t/1.txt DELETE




8、可以使用%Xe,输出事件逗号分割会变为X分隔,使用*作为各项目字段的分割符

/t/sdf CLOSE_WRITE,CLOSE

/t/sdf CLOSE_WRITEXCLOSE



=================================SHELL下的操作事件====================================

START---------(close_write,create,moved_to,attrib,delete)--------------START

操作事件

文件:直接创建/tmp/rs/*f0*CLOSE_WRITEXCLOSE

文件:拷贝其它目录中的文件到当前目录/tmp/rs/*f1*CLOSE_WRITEXCLOSE

文件:拷贝其它目录中的文件到当前目录并重命名/tmp/rs/*f11*CLOSE_WRITEXCLOSE

文件:移动其它目录中的文件到当前目录/tmp/rs/*f2*MOVED_TO

文件:移动其它目录中的文件到当前目录并重命名/tmp/rs/*f33*MOVED_TO

文件:当前目录文件重命名/tmp/rs/*f10*MOVED_TO

文件:拷贝当前目录文件到副本文件/tmp/rs/*f100*CLOSE_WRITEXCLOSE


目录:直接创建/tmp/rs/*d0*CREATEXISDIR

目录:拷贝其它目录中的目录到当前目录/tmp/rs/*d1*CREATEXISDIR

目录:拷贝其它目录中的目录到当前目录并重命名/tmp/rs/*d11*CREATEXISDIR

目录:移动其它目录中的目录到当前目录/tmp/rs/*d2*MOVED_TOXISDIR

目录:移动其它目录中的目录到当前目录并重命名/tmp/rs/*d33*MOVED_TOXISDIR

目录:当前目录中的目录重命名/tmp/rs/*d22*MOVED_TOXISDIR

目录:拷贝当前目录中的目录到副本目录/tmp/rs/*d00*CREATEXISDIR


目录树:直接创建

/tmp/rs/*1*CREATEXISDIR

/tmp/rs/1/*2*CREATEXISDIR

/tmp/rs/1/2/*3*CREATEXISDIR

目录树:移动其它目录中的目录树到当前目录

/tmp/rs/*tree1*MOVED_TOXISDIR

目录树:移动其它目录中的目录树到当前目录并重命名

/tmp/rs/*tree22*MOVED_TOXISDIR

目录树:拷贝其它目录中的目录树到当前目录

/tmp/rs/*tree3*CREATEXISDIR

/tmp/rs/tree3/*2*CREATEXISDIR

/tmp/rs/tree3/2/*3*CREATEXISDIR

目录树:拷贝其它目录中的目录树到当前目录并重命名

/tmp/rs/*tree33*CREATEXISDIR

/tmp/rs/tree33/*2*CREATEXISDIR

/tmp/rs/tree33/2/*3*CREATEXISDIR

目录树:拷贝当前目录中目录树到副本

/tmp/rs/*tree11*CREATEXISDIR

/tmp/rs/tree11/*2*CREATEXISDIR

/tmp/rs/tree11/2/*3*CREATEXISDIR


目录树:目录树顶层目录重命名

/tmp/rs/*tree1bak*MOVED_TOXISDIR

含文件目录树:移动其它目录中含文件目录树到当前目录

/tmp/rs/*tree1*MOVED_TOXISDIR

含文件目录树:移动其它目录中含文件目录树到当前目录并重名目录

/tmp/rs/*tree22*MOVED_TOXISDIR

含文件目录树:拷贝其它目录中含文件目录树到当前目录

/tmp/rs/*tree3*CREATEXISDIR

/tmp/rs/tree3/*1*CREATEXISDIR

/tmp/rs/tree3/1/*1.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree3/1/*2*CREATEXISDIR

/tmp/rs/tree3/1/2/*2.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree3/1/2/*3*CREATEXISDIR

/tmp/rs/tree3/1/2/3/*3.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree3/*tree3.txt*CLOSE_WRITEXCLOSE

含文件目录树:拷贝其它目录中含文件目录树到当前目录并重命名目录

/tmp/rs/*tree33*CREATEXISDIR

/tmp/rs/tree33/*1*CREATEXISDIR

/tmp/rs/tree33/1/*1.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree33/1/*2*CREATEXISDIR

/tmp/rs/tree33/1/2/*2.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree33/1/2/*3*CREATEXISDIR

/tmp/rs/tree33/1/2/3/*3.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree33/*tree3.txt*CLOSE_WRITEXCLOSE

含文件目录树:含文件目录树顶层目录重命名

/tmp/rs/*tree3rename*MOVED_TOXISDIR

含文件目录树:拷贝当前含文件目录树副本到当前目录

/tmp/rs/*tree33.cp*CREATEXISDIR

/tmp/rs/tree33.cp/*1*CREATEXISDIR

/tmp/rs/tree33.cp/1/*1.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree33.cp/1/*2*CREATEXISDIR

/tmp/rs/tree33.cp/1/2/*2.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree33.cp/1/2/*3*CREATEXISDIR

/tmp/rs/tree33.cp/1/2/3/*3.txt*CLOSE_WRITEXCLOSE

/tmp/rs/tree33.cp/*tree3.txt*CLOSE_WRITEXCLOSE

END---------(close_write,create,moved_to,attrib,delete)--------------END





START---------(close_write,close_nowrite,create,moved_to,attrib,delete)-------START

文件改权限、属主、属组(改一个文件):

/tmp/rs/*1*ATTRIB

/tmp/rs/**CLOSE_NOWRITE,CLOSE,ISDIR

文件改权限、属主、属组(改多个文件):

/tmp/rs/*2*ATTRIB

/tmp/rs/*3*ATTRIB

/tmp/rs/*4*ATTRIB

/tmp/rs/**CLOSE_NOWRITE,CLOSE,ISDIR

目录改权限、属主、属组(一个或多个相同,脚本执行中对单行和多行执行不一样):

/tmp/rs/*d1*ATTRIBXISDIR

/tmp/rs/*d2*ATTRIBXISDIR

/tmp/rs/*d3*ATTRIBXISDIR


===================================SFTP下的操作事件====================================


SFTP上传文件:/tmp/rs/*1.txt*CLOSE_WRITEXCLOSE

SFTP文件重命名,脚本输出结果:FTP renamed file: 1.tf

SFTP上传空目录:/tmp/rs/*empty*CREATEXISDIR

SFTP目录重命名:/tmp/rs/*empty_bak*MOVED_TOXISDIR


SFTP上传目录树含文件:/tmp/rs/*d1*CREATEXISDIR

/tmp/rs/d1/*d1.txt*CLOSE_WRITEXCLOSE

/tmp/rs/d1/*d2*CREATEXISDIR

/tmp/rs/d1/d2/*d3*CREATEXISDIR

/tmp/rs/d1/d2/*d2.txt*CLOSE_WRITEXCLOSE

/tmp/rs/d1/d2/d3/*d3.txt*CLOSE_WRITEXCLOSE

SFTP改文件权限(改一个文件)直接运行命令结果:

/tmp/rs/*1.tf*ATTRIB

/tmp/rs/**CLOSE_NOWRITE,CLOSE,ISDI

SFTP改文件权限(改多个文件)直接运行命令结果:

/tmp/rs/*3.txt*ATTRIB

/tmp/rs/*2.txt*ATTRIB

/tmp/rs/*1.tf*ATTRIB

/tmp/rs/**CLOSE_NOWRITE,CLOSE,ISDIR


SFTP改目录权限(一个或多个相同):/tmp/rs/*d1*ATTRIBXISDIR


========================FTP下的操作事件(服务端:vsftp)===============================


FTP上传文件:/tmp/rs/*1.txt*CLOSE_WRITEXCLOSE

FTP文件重命名,直接运行脚本中命令:

/tmp/rs/*1.tf*MOVED_TO

/tmp/rs/**CLOSE_NOWRITE,CLOSE,ISDIR


FTP上传空目录:/tmp/rs/*empty*CREATEXISDIR

FTP目录重命名:/tmp/rs/*empty_bak*MOVED_TOXISDIR


FTP上传目录树含文件:

/tmp/rs/*d1*CREATEXISDIR

/tmp/rs/d1/*d2*CREATEXISDIR

/tmp/rs/d1/d2/*d3*CREATEXISDIR

/tmp/rs/d1/d2/d3/*d3.txt*CLOSE_WRITEXCLOSE

/tmp/rs/d1/d2/*d2.txt*CLOSE_WRITEXCLOSE

/tmp/rs/d1/*d1.txt*CLOSE_WRITEXCLOSE

FTP改文件权限(改一个文件)直接运行命令结果:

/tmp/rs/*1.tf*ATTRIB

/tmp/rs/**CLOSE_NOWRITE,CLOSE,ISDI

FTP改文件权限(改多个文件)直接运行命令结果:

/tmp/rs/*3.txt*ATTRIB

/tmp/rs/*2.txt*ATTRIB

/tmp/rs/*1.tf*ATTRIB

/tmp/rs/**CLOSE_NOWRITE,CLOSE,ISDIR

FTP改目录权限(一个或多个相同):/tmp/rs/*d1*ATTRIBXISDIR


END------------(close_write,close_nowrite,create,moved_to,attrib,delete)------------END