zoukankan      html  css  js  c++  java
  • Inotify+rsync实现实时数据同步

      使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步

      下载inotify

    wget https://github.s3.amazonaws.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
    

      安装

    tar -xf inotify-tools-3.14.tar.gz
    yum -y install gcc-c++
    ./configure --prefix=/usr/local/inotify-tools-3.14
    make && make install
    ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify
    

      显示帮助

     /usr/local/inotify/bin/inotifywait --help
    

      

    inotifywait 3.14
    Wait for a particular event on a file or set of files.
    Usage: inotifywait [ options ] file1 [ file2 ] [ file3 ] [ ... ]
    Options:
    	-h|--help     	Show this help text.
    	@<file>       	Exclude the specified file from being watched.
    	--exclude <pattern>
    	              	Exclude all events on files matching the
    	              	extended regular expression <pattern>.
    	--excludei <pattern>
    	              	Like --exclude but case insensitive.
    	-m|--monitor  	Keep listening for events forever.  Without
    	              	this option, inotifywait will exit after one
    	              	event is received.
    	-d|--daemon   	Same as --monitor, except run in the background
    	              	logging events to a file specified by --outfile.
    	              	Implies --syslog.
    	-r|--recursive	Watch directories recursively.
    	--fromfile <file>
    	              	Read files to watch from <file> or `-' for stdin.
    	-o|--outfile <file>
    	              	Print events to <file> rather than stdout.
    	-s|--syslog   	Send errors to syslog rather than stderr.
    	-q|--quiet    	Print less (only print events).
    	-qq           	Print nothing (not even events).
    	--format <fmt>	Print using a specified printf-like format
    	              	string; read the man page for more details.
    	--timefmt <fmt>	strftime-compatible format string for use with
    	              	%T in --format string.
    	-c|--csv      	Print events in CSV format.
    	-t|--timeout <seconds>
    	              	When listening for a single event, time out after
    	              	waiting for an event for <seconds> seconds.
    	              	If <seconds> is 0, inotifywait will never time out.
    	-e|--event <event1> [ -e|--event <event2> ... ]
    		Listen for specific event(s).  If omitted, all events are 
    		listened for.
    
    Exit status:
    	0  -  An event you asked to watch for was received.
    	1  -  An event you did not ask to watch for was received
    	      (usually delete_self or unmount), or some error occurred.
    	2  -  The --timeout option was given and no events occurred
    	      in the specified interval of time.
    
    Events:
    	access		file or directory contents were read
    	modify		file or directory contents were written
    	attrib		file or directory attributes changed
    	close_write	file or directory closed, after being opened in
    	           	writeable mode
    	close_nowrite	file or directory closed, after being opened in
    	           	read-only mode
    	close		file or directory closed, regardless of read/write mode
    	open		file or directory opened
    	moved_to	file or directory moved to watched directory
    	moved_from	file or directory moved from watched directory
    	move		file or directory moved to or from watched directory
    	create		file or directory created within watched directory
    	delete		file or directory deleted within watched directory
    	delete_self	file or directory was deleted
    	unmount		file system containing file or directory unmounted
    

      监控一个文件夹,开启另外一个窗口创建修改删除文件

    /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f ' -e create,delete,close_write,modify /data/
    

      创建删除打开修改或者重定向都会有输出

     touch test
     vim test 
    

      显示如下

      写一个脚本配合rsync实现数据同步

    #!/bin/bash
    inotify=/usr/local/inotify/bin/inotifywait
    $inotify -mrq --format '%w%f' -e create,close_write,delete,motify /data 
    |while read file
    do
     cd / &&
     rsync -az ./data --delete rsync_backup@192.168.1.4::backup/ 
     --password-file=/etc/rsync.password
    done
    

      rsync安装配置参考文档 https://www.cnblogs.com/minseo/p/8080426.html

       把该脚本设置在后台及开机启动运行即可实现实时的数据同步

  • 相关阅读:
    java Double数据类型比较大小
    java基础02-标识符和关键字
    java基础01-注释
    java程序运行机制
    面试准备之java异常体系
    双亲委派模型
    java类加载器有哪些?
    什么是字节码?采用字节码的好处是什么?
    如何实现一个ioc容器
    ConcurrentHashMap原理,jdk7和jdk8的区别
  • 原文地址:https://www.cnblogs.com/minseo/p/10517411.html
Copyright © 2011-2022 走看看