rsync+inotify 实现数据同步

时间:2022-04-04 09:40:25

背景:

 

    两台服务器之间实现数据同步,常用工具rsync,常见的应用为定时增量同步,然而这种同步需要linux来触发(常见的手段为定时任务),这样难免会有数据丢失的危险,并且rsync使用的是全盘or全目录(同步目标)扫描检测增量备份机制,这样对小文件还行。对海量大文件来讲,全部扫描既加重了服务器的负载,又耗时。


    所以本文引入另外一个非常好用的工具inotify-tools(调用inotify借口)可以实现监控,监控对文件系统的删除、修改、增加、移动等操作,再使用rsync有目的的将增量文件进行同步意义重大。


下面是详细步骤:


步骤一:判断是否支持inotify 

ls -al /proc/sys/fs/inotify/    ------判断是否支持inotify,下面三个文件存在,则支持。
total 0dr-xr-xr-x 0 root root 0 May 26 09:07 .dr-xr-xr-x 0 root root 0 May 26 08:41 ..-rw-r--r-- 1 root root 0 May 26 09:08 max_queued_events-rw-r--r-- 1 root root 0 May 26 09:08 max_user_instances-rw-r--r-- 1 root root 0 May 26 09:08 max_user_watches


步骤二 安装inotify-tools工具

wget http://sourceforge.net/projects/inotify-tools/files/inotify-tools/3.13/inotify-tools-3.13.tar.gz     ------ 下载安装包tar -zxvf  inotify-tools-3.13.tar.gz                                                                      ------ 解压./configure --prefix=/usr/local/inotify-tools-3.13                                                        ------ 软件配置./configure --help                                                                                        ------ 查看配置的相关参数echo $?                                                                                                   ------ 检查配置是否成功(返回结果为0,成功)make && make install                                                                                      ------ 一切ok,编译并安装


步骤三 查看安装目录(使用tree查看目录各个文件的树)

 ln -s  inotify-tools-3.13  inotify-tools                                     ------创建软连接 ls -al inotify-tools-3.13 total 24 drwxr-xr-x.  6 root root 4096 May 26 09:13 . drwxr-xr-x. 12 root root 4096 May 26 09:13 .. drwxr-xr-x.  2 root root 4096 May 26 09:13 bin                               -------两个主要命令所在                                    drwxr-xr-x.  3 root root 4096 May 26 09:13 include drwxr-xr-x.  2 root root 4096 May 26 09:13 lib drwxr-xr-x.  4 root root 4096 May 26 09:13 share


步骤四 命令使用方法探索

/usr/local/inotify-tools/bin/inotifywait  --help                              -------命令使用方法查询/usr/local/inotify-tools/bin/inotifywatch --help                              -------命令使用方法查询

inotify-tools安装完成后,会生成inotifywait和inotifywatch两个指令。

inotifywait用于等待文件或文件集上的一个特定事件,它可以监控任何文件和目录设置,并且可以递归地监控整个目录树。

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


步骤五 案例

/usr/local/inotify-tools/bin/inotifywait -mrq  -e create /opt                 -------监控opt下面是否新建目录或者文件


结论:打开两个终端,就可以明显看到,当/opt/下面创建新文件的时候,就会在另外一个终端中监控到。


应用: 

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /opt \| while read files        do        rsync -av --delete -e ssh root@192.168.1.51 /opt /opt





本文出自 “要将技术进行到底” 博客,请务必保留此出处http://hpfan.blog.51cto.com/7707969/1417350