rsync+Inotifywait实现文件实时同步

简介: rsync+Inotifywait实现实时同步 背景: 某客户想实现实现异地灾备,想达到的是A机房出现断电的时候。数据能实时的将数据同步到B上,并且域名切换到B之后能提供业务 。使用rsync+inotify做web数据和ftp(ftp主要是用户上传的图片文件)的数据实时同步. 一:软件介绍: rsyncrsync是一个开源的快速备份工具,可以再不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,再传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

rsync+Inotifywait实现实时同步

背景:

某客户想实现实现异地灾备,想达到的是A机房出现断电的时候。数据能实时的将数据同步到B上,并且域名切换到B之后能提供业务 。使用rsync+inotify做web数据和ftp(ftp主要是用户上传的图片文件)的数据实时同步.

一:软件介绍:
AI 代码解读
  1. rsync
    rsync是一个开源的快速备份工具,可以再不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,再传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
  2. inotify
    inotify是一种强大的、细粒度的、异步的文件系统事件监控机制,linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加、删除,修改、移动等各种细微事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools就是这样的一个第三方软件,本实验基于此进行数据的监控并调用rsync进行数据实时同步
二 :实验环境:
AI 代码解读

操作系统:centos7
同步源端:10.10.1.128
同步目的端:10.10.1.129
如图:
111111
服务器A为同步源端,服务器B为同步目的端。

三:环境部署
AI 代码解读
  1. 配置rsync源服务器
    检查rsync是否安装,测试环境已经安装此服务,一般服务器已经集成了rsync服务,如未安装请自行网上找相关安装文档。

22222

  1. 修改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

  1. 为备份账户创建数据文件
    根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为root,密码为123456。由于账号信息采取明文存放,因此应调整文件权限,权限调整为600.

333333

  1. 在源端启动rsync进行全量数据同步
    命令:rsync --daemon

444444
在执行运程同步任务时,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用专线链接,如果数据量较大考虑非工作时间同步,避免影响客户应用。本次执行拉取数据量不大,与客户方沟通可在工作时间执行。
55555
测试:在源端创建三个文件分别是test111-333.txt文件,在目的端上将文件同步到本地
66666

    四 :部署inotify工具
AI 代码解读

软件安装

在源服务器上执行
/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete /var/www/html/监控源服务器的文件状态 。在/var/www/html/目录下删除文件,可以看到工具可以实时监控到源服务器出现文件变动情况
在源服务器删除文件test111----test666.txt的文件
Inotifywait工具实时监控到文件变动情况,如下截图
777777
888888
编写触发脚本:
99999
内容如下:
#!/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 五个文件夹,可以看到数据实时的同步到目的端上,如下图
123
在源端删除刚刚创建的目录,在目的端会看到目录自动删除
456
使用rsync+inotifywait进行实时同步数据验证成。

wuque
+关注
目录
打赏
0
0
0
0
32434
分享
相关文章
使用 Rsync 实现远程同步,以及实时同步
Rsync 全称为:Remote Sync(远程同步),是一款开源的快速备份工具,可以在不同主机间镜像同步整个目录树,支持增量备份,保持链接和权限,采用优化的同步算法,传输前执行压缩,适用于异地备份,镜像服务器等应用(Linux 系统默认安装)
1493 0
使用 Rsync 实现远程同步,以及实时同步
sersync+rsync文件目录实时同步
最近需要在生产环境上rsync+inotify实时同步,但是测试发现效果极其不理想,我需要实时同步的目录大小大概为70G。起初用空目录测试的话效果极佳,但是本身我需要同步的目录很大,当我测试写入一个文件时会马上同步到备机,但是脚本后台执行内容日志一直刷扫遍目录下的所有文件,再写入一个文件时是不会马上同步到备机上的,当然等多久我不知道,我想应该会把目录扫遍完成吧!所以在网上找了一个sersync+rsync,我做了一下并发测试,同步效果确实不错。
784 0
rsync同步目录及同步文件
最简单的只读同步工作。   一,服务端的配置          1,安装rsync(阿里云默认已有此程序)                   略          2,生成文件rsyncd.
1149 0

热门文章

最新文章