Centos系统下载大全 | Redhat系统下载大全 | Windows2012系统下载大全 | Windows2008系统下载大全| CMS教程 | 网站地图 51运维网-专注Linux/Unix系统安全运维!
当前位置:51运维网 > 数据库 > Oracle > 正文

Rsync+Inotify-tools实现数据实时同步

时间:2014-12-22 22:32 来源:未知 作者:www.51ou.com 阅读:
inotify是一种强大的,细粒度的,异步文件系统时间监控机制,它可以替代crond实现与rsync的触发式文件同步,从而监控文件系统中添加,删 除,修改,移动等细粒事件,从LINUX 2.6.13起,就已加入了对inotify的支持,所以我们只需要安装一个第三方软件inotify-tools即可管理此服务.之前利用的 rsync+crond来触发实现同步的瓶颈在于,rsync在同步数据时,需要先扫描所有文件后进行比对,而后进行差异传输,如果文件数量级别很大而且 变化会很快,扫描所有文件会非常耗时,而且会存在漏同步的问题,造成效率低下.而rsync+inotify则会弥补前者先扫描后同步的效率问题,采用系 统级别监控各种变化,当文件发生任何变化,就会触发rsync同步,解决效率与实时性问题。

 

Linux操作系统: CentOS6.5 32bit

rsync: 系统自带

data(rsync server):192.168.1.200

test(rsync client):192.168.1.201

 

(server)表示仅服务端配置

(client)表示仅客户端配置

(server,client)表示客户端与服务端都需配置 

环境搭建:(server,client)

1.关闭iptables和SELINUX

# service iptables stop

# service ip6tables stop

#chkconfig iptables off

#chkconfig ip6tables off

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

--------------- 

判断Linux系统内核是否达到2.6.13以上:

# uname -a

-------------

Linux localhost.localdomain 2.6.32-431.el6.i686 #1 SMP Dec 22 00:26:36 UTC 2013 i686 i686 i386 GNU/Linux

-------------

 

查看inotify目录是否存在:

# ls -l  /proc/sys/fs/inotify/

------------------

总用量 0

0 dr-xr-xr-x 0 root root 0 12月 4 14:04 ..

0 dr-xr-xr-x 0 root root 0 12月 4 11:35 .

0 -rw-r--r-- 1 root root 0 12月 4 11:35 max_user_watches

0 -rw-r--r-- 1 root root 0 12月 4 11:35 max_user_instances

0 -rw-r--r-- 1 root root 0 12月 4 11:35 max_queued_events

------------------

若返回以上内容,则系统支持inotify. 

一.安装rsync:(server)

 

配置:(server)

# vi /etc/rsync.conf

--------------------

uid = nobody

gid = nobody

use chroot = no

max connections = 10

auth user = webuser

secrets file = /root/rsync.passwd

strict modes = yes

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log

[data]

path = /data/

comment = web file

ignore errors

read only = no

write only = no

hosts allow = 192.168.1.0/24

hosts deny = *

list = no

 

--------------------

创建rsync同步账户密码验证文件:vi /root/rsync.passwd

输入:webuser:rsync-pwd后保存退出

给rsync同步账户密码验证文件赋予可读可写权限:

chmod 764 /root/rsync.passwd

 

启动rsync

# rsync --daemon --config=/etc/rsync.conf

查看rsync是否启动正常

lsof -i:873

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

rsync   1091 root    4u  IPv4  10692      0t0  TCP *:rsync (LISTEN)

rsync   1091 root    5u  IPv6  10693      0t0  TCP *:rsync (LISTEN)

一切正常,如上所示

 

二.安装inotify-tools:(client)

可以到https://github.com/rvoicilas/inotify-tools/下载zip包,然后传到系统进行编译安装:

# unzip inotify-tools-master.zip

# cd inotify-tools-master

# ./autogen.sh

# ./configure --prefix=/usr/local/inotify

# make && make install

 

 

配置client端的rsync_inotify.sh:(client)

# vi /root/rsync_inotify.sh

该脚本在做客户端目录下文件若发生变化,则向服务端做同步上传操作,也就是保持客户端目录文件发生变化,服务端也相应改变。

------------------

#!/bin/bash

 

host=192.168.1.200 

 

src=/test

     

des=data

 

user=webuser

  

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f %e' -e modify,delete,create,attrib $src | while read files

 

do

 

/usr/bin/rsync -vzrtopg --delete --progress $src $user@$host::$des --password-file=/root/rsync.passwd 

 

echo "${files} was rsynced" >>/tmp/rsync.log 2>&1  

 

done

------------------

 

赋予执行权限

# chmod 764 /root/rsync_inotify.sh

 

创建rsync同步账户密码验证文件:vi /root/rsync.passwd

输入   rsync-pwd后保存退出

给rsync同步账户密码验证文件赋予可读可写权限:

chmod 764 /root/rsync.passwd

 

执行脚本并做开机启动:

# /root/rsync_inotify.sh

# echo "/root/rsync_inotify.sh" >> /etc/rc.local

注:这个脚本的作用是通过inotify监控文件目录的变化,进而触发rsync进行同步操作,由于这是通过内核完成的主动式触发操作,所以比rsync遍历整个目录的扫描方式效率要高很多。

 

验证:

在客户端创建5个文件,到服务端查看文件是否实时同步?

(client)

# cd /test

# touch 1 2 3 4 5

(server)

# cd /data/test

# ls

-------------

1 2 3 4 5

-------------

验证成功,client端的目录发生变化会实时同步到server端

 

总结:

rsync+inotify比较适用于轻量级文件即时同步,如果量大建议还是使用共享存储方法解决。

感谢您对【51运维网 http://www.51ou.com/】的支持,我们为您免费提供《Rsync+Inotify-tools实现数据实时同步》技术文章,《Rsync+Inotify-tools实现数据实时同步》详细使用和说明,有时《Rsync+Inotify-tools实现数据实时同步》可能不完善、敬请谅解!如果《Rsync+Inotify-tools实现数据实时同步》有错误请给我们留言,我们将尽快修复文章错误,如果您觉得本站不错,请分享给周围的朋友!谢谢!

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
验证码:点击我更换图片