多服务器高效数据实时同步方案

实验环境

docker模拟两台centos7服务器

名称 ip 类型
centos_a 172.17.0.2 数据服务器
centos_b 172.17.0.3 备份服务器

实现将a的数据实时同步至b

安装配置软件

备份服务器(b)

1. 安装rsync

安装

#安装
yum -y install rsync
#启动
systemctl start rsyncd && systemctl enable rsyncd

配置rsync文件

vim /etc/rsyncd.conf
 uid = rootgid = rootuse chroot = nomax connections = 4
# pid file = /var/run/rsyncd.pidlock file = /var/run/syncd.locklog file=/var/log/rsyncd.logexclude = lost+found/transfer logging = yestimeout = 900ignore nonreadable = yesdont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2[test]
path=/work/share
comment=zsg test comment
ignore errors
read only=no
write only=no
list=no
auth users=utest
secrets file=/etc/rsyncd-test.pwd

字段解释

#工作中指定用户(可以不指定为0)
uid = 0
gid = 0
#相当于黑洞.出错定位
use chroot = no
##有多少个客户端同时传文件
max connections =200
##超时时间
timeout = 300
##进程号文件
pid ifle = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
##日志文件
log file = /var/log/rsyncd.log
##模块开始(这个模块就是待会儿对端写脚本的里面一个参数的名称)
[msone]
##需要同步的目录(准确的说是同步过来后放到哪里的目录路径)
path = /data/www
##表示出现错误忽略错误
ignore errors
##表示网络权限可写(本地控制真正可写)(亲测这里写false报错)
read only = no
##这里设置IP或让不让同步
list = false
#允许的ip或者ip段
hosts allow = 192.168.1.238
##拒绝,以下表示都不拒绝
hosts deny = 0.0.0.0/32
##认证用户
auth users = rsynclsl
##用户名和密码存放文件
secrets file = /etc/rsync.secrets

创建密码文件并重启

echo "utest:123456">/etc/rsyncd-test.pwdchmod 600 /etc/rsyncd-test.pwdsystemctl restart rsyncd

数据服务器(a)

1. 安装rsync

安装

yum -y install rsync

配置密码

echo "123456">/etc/rsyncd-test.pwd

仅作为数据服务器,完成安装后无需启动

2.安装Inotify

下载

wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
#如果下载过慢可以使用下面
wget https://gitee.com/zsgwakk/mirror/raw/master/inotify-tools-3.14.tar.gz

安装

tar xzf inotify-tools-3.14.tar.gz ;cd inotify-tools-3.14./configure --prefix=/usr/local/inotify makemake install

编写脚本 inotify-test

当文件发送变化时触发同步

vim inotify-test.sh
#!/bin/bash
src=/work/share/
des=test
rsync_passwd_file=/etc/rsyncd-test.pwd
ip1=172.17.0.3
user=utest
inotify_exclude="--fromfile '$PWD/notify-fromfile'"#排除监控文件
rsync_exclude="--exclude-from=$PWD/rsync-exclude"#排除同步文件
cd ${src}
/usr/local/inotify/bin/inotifywait -mrq --format  '%Xe %w%f' -e modify,create,delete,attrib,close_write,move  $inotify_exclude ./ | while read filedoINO_EVENT=$(echo $file | awk '{print $1}')INO_FILE=$(echo $file | awk '{print $2}')if [[ $INO_EVENT =~ 'CREATE' ]] || [[ $INO_EVENT =~ 'MODIFY' ]] || [[ $INO_EVENT =~ 'CLOSE_WRITE' ]] || [[ $INO_EVENT =~ 'MOVED_TO' ]]thenecho '--CREATE or MODIFY or CLOSE_WRITE or MOVED_TO---'echo $fileif [ -f $INO_FILE ]then#文件sudo /usr/bin/rsync -avzc $rsync_exclude  --password-file=${rsync_passwd_file} $INO_FILE ${user}@${ip1}::${des}/$INO_FILEelif [ -d $INO_FILE ]then#目录sudo /usr/bin/rsync -avzc $rsync_exclude  --password-file=${rsync_passwd_file} $INO_FILE/ ${user}@${ip1}::${des}/$INO_FILEelseecho "file not found"fifiif [[ $INO_EVENT =~ 'DELETE' ]] || [[ $INO_EVENT =~ 'MOVED_FROM' ]]thenecho '--DELETE or MOVED_FROM--'echo $filesudo /usr/bin/rsync -avz $rsync_exclude  --password-file=${rsync_passwd_file}  $(dirname ${INO_FILE})/ ${user}@${ip1}::${des}/$(dirname ${INO_FILE})fi
#不同步属性变化
#        if [[ $INO_EVENT =~ 'ATTRIB' ]]
#        then
#                if [ ! -d "$INO_FILE" ]
#                then
#                   echo 'ATTRIB'
#                    sudo /usr/bin/rsync -avzc --exclude-from=rsync-exclude  --password-file=${rsync_passwd_file} $(dirname ${INO_FILE}) ${user}@${ip1}::${des}
#                fi
#        fi
done

排除监控目录

vim notify-fromfile#过滤掉log和temp目录
@/work/share/runtime/log
@/work/share/runtime/temp

排除同步目录

data/conf/*
data/cliruntime/*
data/runtime/*

编写脚本inotify-test-all.sh

手动同步全部文件

#!/bin/bash
sudo /usr/bin/rsync -avzc --password-file=/etc/rsyncd-test.pwd --exclude=runtime/log --exclude=runtime/temp  /work/share utest@172.17.0.3::test

执行脚本

#给俩脚本执行权限
#手动同步全部文件到a
sh inotify-test-all.sh
#启动inotify监控同步
nohup sh inotify-test.sh &
#可以设置开机启动,自行google

开始使用

在a中修改文件内容

echo "hello world"> /work/share/test.txt

在b中对应目录即可查看

参考文章

https://blog.csdn.net/wintershang/article/details/89354539
https://blog.csdn.net/in_christ/article/details/80568384

rsync+inotify高效实时同步相关推荐

  1. rsync+inotify实现实时同步案例详解

    rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...

  2. rsync + inotify 实现实时同步

    rsync + inotify 实现实时同步 rsync 简介 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.并且可以不进行改变原有数据的属性信息,实现 ...

  3. rsync + inotify 数据实时同步

    一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...

  4. Rsync+inotify实现实时同步

    如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法.假如你答了scp或者ftp.那么你挂的几率是很大的 一.inotify介绍 inotify-tools有两个命令 //ino ...

  5. rsync+inotify实现实时同步案例--转

    转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...

  6. 【Rsync + inotify】 实时同步远程服务器目录文件

    文章目录 服务端 安装.配置 rsync 客户端 安装rsync 使用rsysnc 实现 实时同步 如何排错??? 服务端 安装.配置 rsync centos: # yum install rsyn ...

  7. rsync+inotify实现实时同步案例

    随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数 ...

  8. Linux平台上文件同步——rsync+inotify之实时同步

    1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地实时同步和本地定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...

  9. Rsync+Inotify+Sersync实时同步服务

    目录 实时同步服务原理 实时同步服务部署 部署rsync守护进程 部署inotify监控服务 下载安装软件 熟悉命令使用 inotify企业应用 部署sersync同步服务 下载安装软件 编写配置文件 ...

最新文章

  1. 【原创】TLV5618芯片驱动程序
  2. spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库
  3. 运行sre10_在生产中运行Java:SRE的观点
  4. jq ajax提交评论,织梦评论怎么改成自己的jq ajax评论
  5. 2021年度618品牌营销分析报告
  6. 设置android:sharedUserId=android.uid.system 支持 sdcard读写
  7. python 线程间通信之Condition, Queue
  8. 教你如何防止网站被挂马!
  9. python中format函数用法简书_Python format 格式化函数
  10. 微信小程序API之showModal(Loding...)
  11. scala yield入门详解
  12. 最新MT2503平台技术资料集锦
  13. 东方时尚驾校的学车经历
  14. SICP 第一章的练习
  15. Flutter获取焦点
  16. C语言获取执行程序所在的目录路径
  17. 男人29岁发奋能成功吗
  18. 列表ul li前面的点如何更改颜色、形状、大小
  19. 如何查看浏览器http请求协议
  20. ai建立使用图案_怎么用AI创建无缝拼贴图案样式 Illustrator创建无缝拼贴图案教程...

热门文章

  1. CH376 SD卡走线 TF卡走线
  2. 一级建造师课件免费下载_注册建造师管理制度中的矛盾点总结!
  3. Java实战之亲戚关系计算器(swing版)(1)——项目简述
  4. 第14课 Altium Designer20(AD20)+VESC6.4实战教程:PCB总体布局介绍(北冥有鱼)
  5. 基于javaweb的股票交易模拟系统设计与实现-计算机毕业设计源码+LW文档
  6. 机场指挥调度解决方案
  7. 安全的即时沟通软件主要表现在哪些方面
  8. 原子核的加法wy.xuexi.biz
  9. 临床医生求职简历模板范文--带详细内容
  10. 榆林市科技馆项目变电所运维的研究与应用