rsync+Inotify数据的实时同步

1,安装完inotify-tools后,会在 /usr/local/bin 目录下新生成inotifywait和inotifywatch两个指令;

inotifywait:用于等待一个特定事件;

inotifywatch:用于收集被监控的文件系统统计数据,包括每个inotify事件发生多少次等信息;


inotifywait命令常用选项如下:

-m 是保持一直监听

-r 是递归查看目录

-q 是打印出事件

-e <event>, --event <event> 指定需要监控的特定事件,默认监控所有文件事件;

--timefmt <fmt> 当在--format选项中使用%T时,--timefrt选项则可以用来指定自定义的符合strftime规范的时间格式;--timefrt后常用的参数是'%d/%m/%y %H:%M';

--format <fmt> 自定义inotifywait的输出格式;如 --format '%T %w %f';常用的格式符如下:

%T:使用--timefmt选项中自定义的时间格式;

%w:显示被监控文件的文件名;

%f:如果发生某事件的对象是目录,则显示被监控目录的名字,默认显示为空串;


2,vim inotify.sh

#!/bin/bash


src="/opt/pub"

dst="/opt/share"


rsync (){


cd $src && /opt/app/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' -e create,move,close_write,delete ./ | while read date time file event;do


        if [[ ! $file =~ .swp$|.swpx$|.swx$ ]] && [[ ${file:0-4} != "4913" ]] && [[ ${file:0-1} != "~" ]];then


                echo $file---$event

                case $event in

                        CREATE|CREATE,ISDIR|MOVED_TO|MOVED_TO,ISDIR|CLOSE_WRITE,CLOSE)


                                /usr/bin/rsync -avzP $file $dst/  >> /opt/app/inotify/rsync.log 2>&1

                        ;;

                        MOVED_FROM|MOVED_FROM,ISDIR|DELETE|DELETE,ISDIR)


                                /usr/bin/rsync -avzP --delete-excluded --exclude=$file $src/ $dst/  >> /opt/app/inotify/rsync.log 2>&1

                        ;;

                esac

        fi

done

}


rsync

你可能感兴趣的:(rsync,inotify,inotifywait)