CentOS下rsync+inotify-tools实现数据实时同步更新

rsync优点:安全性高、备份速度快、支持增量备份等。inotify是细密度的、异步的文件系统事件监控机制,Linux内核从2.6.13起,加入了对inotify的支持,通过第三方软件inotify-tools可以监控文件系统下的文件的各种变化情况。

rsync和inotify-tools的配合使用可以实现数据的实时同步更新。以下是配置过程。

环境说明

Server A ip address :192.168.2.102
Server B ip address :192.168.2.103

Server A的rsync服务配置

安装rsync

这里直接使用yum安装rsync。

yum -y install xinetd rsync
sed -i '/disable/s/yes/no/g' /etc/xinetd.d/rsync
/etc/init.d/xinetd restart > /dev/null

建立rsync主配文件:rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 200
port = 873
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log

[wwwroot]
path = /data/wsdata/wwwroot/
comment = This is test
auth users = backupadmin
ignore errors
read only = no
list = no
hosts allow = 192.168.2.0/255.255.255.0
secrets file = /etc/rsync.pas

创建rsync认证文件:sync.pas

【格式】 用户:密码文件

vim /etc/rsync.pas

backadmin:password

chmod 600 rsync.pas
启动服务rsync服务

rsync --daemon
Server B的rsync服务配置

安装rsync,跟Server A一样的方法。

yum -y install xinetd rsync
sed -i '/disable/s/yes/no/g' /etc/xinetd.d/rsync
/etc/init.d/xinetd restart > /dev/null

建立密码文件,密码文件权限:600

vim /etc/rsync.pas

password

chmod 600 /etc/rsync.pas

rsync同步文件方法

从Server A服务器上下载

rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas backupadmin@192.168.2.102::wwwroot /data/wsdata/wwwroot/

上传到Server A服务器

rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas /data/wsdata/wwwroot backupadmin@192.168.2.102::wwwroot
inotify-tools实现实时同步更新

以下配置全部在Server B服务器上操作。

下载安装inotify-tools

wget https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools
./configure && make && make install
Server B的inotify监控脚本

vim rsync_inotify.sh
#!/bin/bash
src=/data/wsdata/wwwroot/

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $src | while read file
do
rsync -vzrtopg --delete --progress --password-file=/etc/rsync.pas $src backupadmin@192.168.2.102::wwwroot
echo "$src was rsynced"
done

注意:目录/data/wsdata/wwwroot/末尾一定加斜杠 “/”

-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
--timefmt 是指定时间的输出格式
--format 指定文件变化的详细信息
-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
执行脚本

nohup ./rsync_inotify.sh &

nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

执行后的结果是Server B上更新了文件,会自动同步到Server A上。

如果出现这个错误“/usr/local/bin/inotifywait: error while loading shared libraries:
libinotifytools.so.0”可以采用以下办法解决:

ln -sv /usr/local/lib/libinotify* /usr/lib/

时间: 2024-09-22 18:32:52

CentOS下rsync+inotify-tools实现数据实时同步更新的相关文章

rsync与inotify集成实现数据实时同步更新

上篇文章我们介绍了如何使用rsync同步文件,这篇文章我们再来介绍下,如何把rsync与inotify集成实现数据的实时同步. 要达到这个目的,我们需要分以下几个步骤: 1.rsync的优点与不足 2.inotify是什么 3.检测OS是否支持inotify 4.inotify相关参数详解 5.inotify监控的文件事件类似 6.inotify-tools是什么 7.安装inotify-tools 8.inotifywait使用详解 9.inotifywatch使用详解 10.inotif-t

你真的了解触发器么 数据实时同步更新问题剖析

当我们想更新一张动态表的时候(即:表中的数据不断的添加),也许我们会用数据库代理,通过写作业,然后让他定时查询动态表中最新添加的数据,然后更新数据.这样时能实现更新数据的要求,但是数据却不能实时同步更新. 这个时候,触发器就是我们想要的神器了.我们可以在那张动态表上新建触发器.触发器的实质就是个存储过程,只不过他调用的时间是根据所建的动态表发生该表而执行(即:Insert新数据,Update或者Delete数据). 具体怎么使用触发器,今天我这里就不介绍了,园子里资料多的很.那么我今天要介绍的是

Linux环境下通过rsync+inotify实现数据实时同步

本站一直缺少类似方面教程,今天就补充一下.其中rsync是一个远程数据同步工具,使用方法可以参考之前的文章<linux系统下Rsync远程数据同步命令介绍以及使用整理> ,但数据更新以后数据还需要手工同步,无法实现自动化.这里就借助资料配置一个rsync+innotify实现数据实时同步,解决手工处理烦恼. 环境准备:centos三台 源数据服务器:192.168.1.8 目标服务器:192.168.1.9    192.168.1.10 测试目的:将源服务器的/home/21yunwei 自

Linux下Rsync+sersync实现数据实时同步的例子

前言: 一.为什么要用Rsync+sersync架构? 1.sersync是基于Inotify开发的,类似于Inotify-tools的工具 2.sersync可以记录下被监听目录中发生变化的(包括增加.删除.修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录. 二.Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别? 1.Rsync+Inotify-tools (1):Inotify-tools只能记录

sersync:基于 rsync + inotify 实现数据实时同步

前言 提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会使用ftp/sftp等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输.针对数据实时同步需求大多数人会选择rsync+inotify-tools的解决方案,但是这样的方案也存在一些缺陷(文章中会具体指出),sersync是国人基于前两者开发的工具,不仅保留了优点同时还强化了实时监控,文件过滤,简化配置等功能,帮助用户提高运行效率,节省时间和网络资源. 可靠高效的数据实时同步方式 原理 Synchronize f

Linux中利用Rsync+Inotify-tools实现数据实时同步备份

说明: 操作系统:CentOS 5.X 源服务器:192.168.21.129 目标服务器:192.168.21.127,192.168.21.128 目的:把源服务器上/home/www.111cn.net目录实时同步到目标服务器的/home/www.111cn.net下 具体操作: 第一部分:分别在两台目标服务器192.168.21.127,192.168.21.128上操作 一.分别在两台在目标服务器安装Rsync服务端 1.关闭SELINUX vi /etc/selinux/config

企业Linux服务器数据实时同步备份的解决方案

数据是最宝贵的财产!公司的服务器都是需要对数据有着完整的备份策略,利用脚本.计划任务.开源软件等等,无论那种途径,能够对数据的实时同步,才是最理想的效果!下面详细介绍利用rsync配合inotify实现数据实时的触发同步. rsync:可以镜像保存整个目录树和文件系统.可以很容易做到保持原来文件的权限.时间.软硬链接等等.第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件. 方案:起初用rsync进行数据备份是利用计划任务,定时执行一下命令实现rsync的同步,但最近开发这边

创建RDS到分析型数据库AnalyticDB数据实时同步

数据传输服务DTS支持RDS到分析型数据库AnalyticDB之间的数据实时同步.通过DTS提供的RDS->AnalyticDB实时同步功能,可以将将企业数据集中分析,实现企业内部各种BI.CRM.实时报表系统等. 本小节介绍如何使用数据传输服务DTS快速创建RDS(MySQL)->AnalyticDB实例之间的实时同步作业,实现RDS增量数据到AnalyticDB的数据实时同步. 支持功能 支持同一个阿里云账号下RDS(MySQL)->AnalyticDB实例的数据实时同步. 支持不同

oracle-大神请问 把表A更新过的数据实时同步update到表B相应的那条数据的触发器应该怎么写啊,急!!

问题描述 大神请问 把表A更新过的数据实时同步update到表B相应的那条数据的触发器应该怎么写啊,急!! CREATE OR REPLACE TRIGGER tr_upd_js BEFORE insert or update ON JNLS ---把jnls的改动update到sh表jnls FOR EACH ROW BEGIN IF INSERTING THEN INSERT INTO SH_JNLS( TRANSID, FEE, CRD_MEDIUM, CRD_TYPE) VALUES(