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

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

  • 相关阅读:
    【学习】reactjs(一)——使用npm创建react项目并整合elementUI
    【学习】整合springboot2.0 和 mybatis,实现基本的CRUD
    macos monterey 系统升级后 go build 错误
    [R语言]关联规则2---考虑items之间严格的时序关系
    [R语言]关联规则1---不考虑items之间的时序关系
    [python]使用python实现Hadoop MapReduce程序:计算一组数据的均值和方差
    [机器学习笔记]奇异值分解SVD简介及其在推荐系统中的简单应用
    [机器学习笔记]主成分分析PCA简介及其python实现
    [游戏数据分析]WAU模型简介及WAU预测
    [R语言]读取文件夹下所有子文件夹中的excel文件,并根据分类合并。
  • 原文地址:https://www.cnblogs.com/minseo/p/10517411.html
Copyright © 2011-2022 走看看