rsync-Inotify文件数据实时同步

来源:互联网 发布:外汇平台 知乎 编辑:程序博客网 时间:2024/06/01 07:33

*简单说明
rsync:
文件复制工具,可以支持远程之间数据压缩后高效传输
Inotify:
为用户态程序提供了文件系统事件通告机制,目前已经集成到内核中
Inotify-tools:
就是提供的用户态监控文件系统的工具,用来实现对文件系统的实时监控。

**注意
(1)安装Inotify-tools后需要使用ldconfig 加载动态模块;
(2)在客户端出现denied显现是多数是用户权限出问题了;
(3)理解“模块”,就是rsyncd.conf中[ ]中的名称;
(4)在实时检测到信息后就应该触发同步机制;
(5)同步数据方案的安全性、完整性;

此案例是解决集群中多台实际应用服务器(real app server)的数据一致性问题
1、安装rsync
编译安装与yum源安装均可,服务端和客户段使用yum
yum install rsync

2、服务端配置
(1)创建同步数据的目录
mkdir /TEST
(2)手动创建配置文件 vi /etc/rsyncd.conf

motd file = /etc/rsyncd.motdtransfer logging = yeslog file = /var/log/rsyncd.logpid file = /var/log/rsyncd.pidlock file = /var/log/rsyncd.lockport = 873  #监听端口address = 192.168.0.5 #监听地址uid = root #注意此处用户与用户组,同步时可能遇到用户权限问题导致同步异常gid = rootuse chroot = yes #是否使用根目录重定向read only = no  #对模块中定义的目录是否只具有可权限max connections = 5[shareCommonDir] #模块名称定义,在同步路径中使用comment = rsynchrounous dir  #提示信息path = /TEST #模块的实际路径ignore errors #忽略IO错误exclude = KingRedfly/  #添加例外路径 auth users = root #认证的用户secrets file = /etc/rsyncd.secrets #用户与密码认证文件hosts allow=192.168.0.6/24  192.168.0.5/24  1.1.1.5/24 1.1.1.6/24 127.0.0.1/24 ACLhosts deny=*list = false 

(3)其他配置
用户与密码文件
echo “wanghongfei:wanghongfei”>/etc/rsyncd.secrets
用户与密码文件权限,在客户段中密码文件权限如果设置错误(如不是600而是777则提示错误)
chmod 600 /etc/rsyncd.secrets
欢迎信息
echo “Welcome to Demo”>/etc/rsyncd.motd
设置开机时,rsync以守护进程方式运行
echo “/usr/bin/rsync –daemon”>>/etc/rc.local
防火墙配置注意通过主配置文件中的监听端口和地址配置访问策略

3、客户段设置
(1)安装Inotify-tools
确认已安装rsync,通过编译安装方式安装Inotify-tools
地址:https://github.com/rvoicilas/inotify-tool
(2)编写自动同步脚本
当客户段(发布数据,向所有real Server发布数据),保证数据同步

vi /inotify_rsync.sh#!/bin/shSRC=/BACKUP/DEST1=/TESTIP1=192.168.0.5IP2=192.168.0.6rsyncUser=rootpassfile=/etc/rsync.pass[ ! -e $passfile ] && exit 2inotifywait -mrq --timefmt '%y-%m-%d %H:%M:%S' --format '%T %w%f %e' --event modify,create,move,delete,\attrib $SRC | while read linedoecho "$line">/dev/null 2>/dev/null/usr/bin/rsync -aptogzv --delete --progress --password-file=$passfile $SRC $rsyncUser@${IP1}::shareCommonDir >>/var/log/inotity.log  2>/dev/nulldone
1 0
原创粉丝点击