• 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

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

  • 相关阅读:
    idea 设置默认的maven
    IDEA中Tomcat部署时war和war exploded区别
    所谓的SaaS服务到底是什么?
    java8 Lambda表达式
    java8 :: 用法 (JDK8 双冒号用法)
    idea 本地调试,修改代码,代码自动生效
    nacos配置中心demo
    Logparser 的用法
    android软键盘的一些控制 转来的,格式有点乱
    TranslateAnimation 使用详解
  • 原文地址:https://www.cnblogs.com/minseo/p/10517411.html
Copyright © 2020-2023  润新知