通过rsync+inotify实现本、异地远程数据实时同步

随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。其次,rsync不能实时的去监测、同步数据,虽然它可以通过linux守护进程的方式进行触发同步,但是两次触发动作一定会有时间差,这样就导致了服务端和客户端数据可能出现不一致,无法在应用故障时完全的恢复数据。基于以上原因,rsync+inotify组合出现了!

inotify是一种强大的、细粒度的、异步的文件系统事件控制机制。linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施监控的软件。

0x0 测试环境

总部生产服务器与分部备份服务器要求实现异地数据备份,环境如下

**centos 6.5**
生产服务器目录: /home/zytest/files
备份服务器目录: /home/zytest/files
用户 / 密码: zytest / zytest

0x1 生产服务器环境搭建

0x1.1 安装gcc编译器和rsync

yum install gcc rsync -y

0x1.2 拷贝inotify到服务器并解压

cd /root
tar xfvz inotify-tools-3.13.tar.gz

0x1.3 进入inotify 目录安装

cd inotify-tools-3.13
./configure
make
make install    

/usr/local/bin/inotifywait ##检查是否安装成功

0x2 备份服务器环境搭建

0x2.1 安装 xinetd 和 rsync

yum install xinetd rsync -y

0x3 以下内容两台服务器同步操作

useradd -u 600 zytest
passwd zytest    
zytest
su - zytest -c 'mkdir /home/zytest/files' ##创建同步目录

0x4 备份服务器上配置rsyncd

0x4.1 编辑/etc/xinetd.d/rsync按照以下内容修改

disable  = yes  ==> disable  = no
flags        = IPv6  ==> flags       = IPv4
server_args = --daemon ==> server_args = --daemon --config=/etc/rsyncd.conf

0x4.2 编辑/etc/rsyncd.conf 并添加以下脚本信息

uid = root
gid = root
use chroot = no
max connections = 1000
strict mode = yes
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
# following for user "zytest", change for other users
[zytest]
path = /home/zytest
ignore errors
auth users =zytest
secrets file = /home/rsync-dst.ps
read only = no
list = false

Ps: rsyncd 配置文件在 xinetd上,所以备份服务器安装xinetd

0x4.3 把密码写入调用的密码文件并赋予权限

echo zytest:zytest >> /home/rsync-dst.ps
chmod 600 /home/rsync-dst.ps

0x4.4 通过xinetd启动rsync

/etc/rc.d/init.d/xinetd restart

0x5 主服务器上配置inosync脚本文件

**** ##编辑/root/inosync添加脚本代码****

#!/bin/sh#chkconfig: 3 78 10#This file exist from compileif [ ! -f /usr/local/bin/inotifywait ]
thenecho "cannot start. file inotifywait NOT exist!"exitfi#This file is runnable shell scriptif [ ! -f /usr/local/bin/inosync.so.1 ]
thenecho "contact administrator. inosync.so.1 NOT exist!"exitficase "$1" in'start')
/usr/local/bin/inosync.so.1 &
;;

'stop')
pid=`ps -ef | grep -v grep | grep "inotifywait" | awk '{print $2}'`
kill -9 $pid 2>&1
;;

'restart')
$0 stop
$0 start
;;

esac

0x5.2 赋予脚本权限,设置开机启动

chmod a+x /root/inosync
cp /root/inosync /etc/rc.d/init.d

0x5.3 配置调用的主脚本文件 /root/inosync.so.1

rhost=**备份服务器IP**
user=zytest
src=/home/zytest/files
dst=zytest
#dst corresponding to [zytest] in file /etc/rsyncd.conf on dst serverlog=/root/inosync.log
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w%f %e' -e close_write,create,move,delete,attrib $src | while read files
doecho == rsync begin == >> $log
rsync -avP --password-file=/home/rsync-src.ps --delete $src $user@$rhost::$dst >> $log 2>&1
echo -- rsyncd -- >> $log
date >> $logecho "${files} was rsynced " >> $log 2>&1
done

PS: %T后面有空格 %f和%e之间也有空格

0x5.4 赋予inosync.so.1脚本权限,拷贝到/usr/local/bin

chmod a+x /root/inosync.so.1
cp /root/inosync.so.1 /usr/local/bin

0x5.5 把密码写入调用的密码文件并赋予权限

echo zytest >> /home/rsync-src.ps
chmod 600 /home/rsync-src.ps

0x6 目标服务器设置inosync自动启动并开启inosync服务

chkconfig --level 3 inosync on
/etc/rc.d/init.d/inosync start

0x7 测试 END

在生产服务器/home/zytest/files目录下创建文件和文件夹,查看备份存储是否也同步了文件和文件夹,同步即成功。

过程可通过日志查看

tail -f /root/inosync.log

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/210258.html<

(0)
管理的头像管理
上一篇2025-04-09 20:38
下一篇 2025-04-09 20:39

相关推荐

  • 自营机房和代理机房有什么区别,哪个更稳定可靠

    自营机房和代理机房最根本的区别在于基础设施的归属权与运营主体,自营机房由服务商自主建设、维护并持证运营,提供全程可控的IDC服务;代理机房则通过转售第三方资源,缺乏底层控制力, 选择自营还是代理,直接关系到业务的稳定性、安全边际和售后深度,近年来,随着工信部对IDC行业持证经营的要求逐步收紧,越来越多企业开始关……

    2026-07-26
    0
  • 高防服务器常见的套路猫腻如何辨别,有哪些常见的坑?

    辨别高防服务器猫腻的关键在于核实防御能力真实性、检查机房资质与服务条款,避免被低价宣传和虚假承诺误导,常见猫腻有哪些虚假防御能力不少服务商声称提供单机百G防御,实际可能只有几十G,甚至多个用户共享同一防御带宽,一旦遭遇真实攻击,防护效果远低于宣传值,部分商家还会利用“突发清洗”概念,只在攻击峰值时短暂启用清洗设……

    2026-07-26
    0
  • 选择IDC服务商千万不能忽略哪几点,有哪些注意事项?

    选择IDC服务商,资质和合规性是最容易被忽视却至关重要的环节,一家没有完整资质的服务商,无论价格多低都不值得选择, 近年来,企业数字化转型加速,对IDC服务的需求持续增长,但服务商水平参差不齐,如果你正在挑选IDC服务商,需要从资质、机房、服务、成本等几个核心维度仔细考察,才能避免业务埋雷,资质认证:合规经营的……

    2026-07-26
    0
  • 低价服务器到底为什么不能买,有什么风险?

    低价服务器看似省钱,实则隐藏性能差、不稳定、数据安全无保障、售后缺失甚至跑路等风险,最终可能让你付出更高代价,低价服务器常见的“坑”性能陷阱:超售严重低价服务器的核心套路是超售,一台物理机卖给几十甚至上百个用户,CPU、内存、带宽全面拥挤,你买到的所谓“独享”资源,实际上与邻居争抢,高峰期响应延迟直接拉满,用……

    2026-07-26
    0
  • 新手买站群服务器怎么避坑不被坑,推荐哪家服务商比较好?

    新手买站群服务器,踩坑的根源往往在于只看价格不看资质,要避开风险,必须从持牌经营、机房实地、IP池质量三个维度入手,缺一不可,站群服务器常见的“坑”有哪些IP被“污染”或“墙”了多数新手贪便宜,买到被滥用过的IP段,这类IP发出去的邮件被拒,收录慢,甚至直接被墙,你花时间搭起来的站群,还没开始跑流量就废了,IP……

    2026-07-26
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注