rsync+Inotifywait实现文件实时同步

某客户想实现实现异地灾备,想达到的是A机房出现断电的时候。数据能实时的将数据同步到B上,并且域名切换到B之后能提供业务 。使用rsync+inotify做web数据和ftp(ftp主要是用户上传的图片文件)的数据实时同步.
一:软件介绍:
  • rsync
    rsync是一个开源的快速备份工具,可以再不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,再传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
  • inotify
    inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件,本实验基于此进行数据的监控并调用rsync进行数据实时同步
二 :实验环境:
操作系统:centos7
同步源端:10.10.1.128
同步目的端:10.10.1.129
如图:

服务器A为同步源端,服务器B为同步目的端。
三:环境部署
  • 配置rsync源服务器
    检查rsync是否安装,测试环境已经安装此服务,一般服务器已经集成了rsync服务,如未安装请自行网上找相关安装文档。
  • 修改rsync默认配置文件,位于/etc/rsyncd.conf。
    10.10.1.128的配置文件如下:
uid = root
gid = root
use chroot = yes
address = *
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 10.10.1.129
[datadir]
path = /var/www/html
read only = false
dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2
auth users = root
secrets file = /etc/rsyncd_users.db
10.10.1.129的配置文件如下:
uid = root
gid = root
use chroot = yes
address = *
port 873
log file = /var/log/rsyncd.log 
pid file = /var/run/rsyncd.pid 
hosts allow = 10.10.1.128
[datadir]
path = /var/www/
read only = false
dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2
auth users = root*
secrets file = /etc/rsyncd_users.db
  • 为备份账户创建数据文件
    根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为root,密码为123456。由于账号信息采取明文存放,因此应调整文件权限,权限调整为600.
 
  • 在源端启动rsync进行全量数据同步
    命令:rsync --daemon
 

在执行运程同步任务时,rsync命令需要指定同步源服务器中的资源位置。rsync同步源的资源表示方式为“用户名@主机地址::共享模块名”或者“rsync://用户名@主机地址/共享模块名”,前者为两个冒号分隔形式,后者为URL地址形式。
rsync -avz  root@10.10.1.128::datadir /opt
rsync -avz rsync://root@10.10.1.128/datadir /opt
注意:此操作是先做全量的数据拉取。机房A和B用专线链接,如果数据量较大考虑非工作时间同步,避免影响客户应用。本次执行拉取数据量不大,与客户方沟通可在工作时间执行。
 

测试:在源端创建三个文件分别是test111-333.txt文件,在目的端上将文件同步到本地
 
    四 :部署inotify工具
软件安装
在源服务器上执行
/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete /var/www/html/监控源服务器的文件状态 。在/var/www/html/目录下删除文件,可以看到工具可以实时监控到源服务器出现文件变动情况
在源服务器删除文件test111----test666.txt的文件
Inotifywait工具实时监控到文件变动情况,如下截图
 
 

编写触发脚本:
 

内容如下:
#!/bin/bash
INOTIFY_CMD="/usr/local/inotify/bin/inotifywait -mrq -e 
modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -avH --port=873 --progress --delete /var/www/html  root@10.10.1.129::datadir --password-file=/etc/server.pass"
$INOTIFY_CMD | while read file
do
$RSYNC_CMD
echo "${file}" >> /tmp/rsync.log 2>&1 
done
/etc/server.pass的文件权限改成600,文件内部填写密码
启动脚本后台运行实时监控文件监控与同步
脚本实时监控文件的修改,删除,创建等操作后触发rsync进行增量的同步源服务器上 ,rsync的日志记录到/tmp/rsync.log , 进行验证
在源端上创建111-555 五个文件夹,可以看到数据实时的同步到目的端上,如下图
 

在源端删除刚刚创建的目录,在目的端会看到目录自动删除
 

使用rsync+inotifywait进行实时同步数据验证成。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值