rsync+inotify高效实时同步
多服务器高效数据实时同步方案
实验环境
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高效实时同步相关推荐
- rsync+inotify实现实时同步案例详解
rsync+inotify实现实时同步案例详解 转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也 ...
- rsync + inotify 实现实时同步
rsync + inotify 实现实时同步 rsync 简介 Rsync是一款开源的.快速的.多功能的.可实现全量及增量的本地或远程数据同步备份的优秀工具.并且可以不进行改变原有数据的属性信息,实现 ...
- rsync + inotify 数据实时同步
一.rsync介绍 rsync英文全称为Remote synchronization,从软件的名称就可以看出来,Rsync具有可是本地和远程两台主机之间的数据快速复制同步镜像.远程备份的功能,这个功能 ...
- Rsync+inotify实现实时同步
如果有一天去接受面试:面试官问你一个1t的文件需要进行传输,问题用何种方法.假如你答了scp或者ftp.那么你挂的几率是很大的 一.inotify介绍 inotify-tools有两个命令 //ino ...
- rsync+inotify实现实时同步案例--转
转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...
- 【Rsync + inotify】 实时同步远程服务器目录文件
文章目录 服务端 安装.配置 rsync 客户端 安装rsync 使用rsysnc 实现 实时同步 如何排错??? 服务端 安装.配置 rsync centos: # yum install rsyn ...
- rsync+inotify实现实时同步案例
随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐渐暴露出了很多不足,首先,rsync同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数 ...
- Linux平台上文件同步——rsync+inotify之实时同步
1 前言 1.1 概述 本文介绍使用rsync和 inotify-tools,实现linux 上的本地实时同步和本地定时同步的方法. 1.2 实验环境 服务器两台 操作系统: CentOS-7.4 软 ...
- Rsync+Inotify+Sersync实时同步服务
目录 实时同步服务原理 实时同步服务部署 部署rsync守护进程 部署inotify监控服务 下载安装软件 熟悉命令使用 inotify企业应用 部署sersync同步服务 下载安装软件 编写配置文件 ...
最新文章
- 【原创】TLV5618芯片驱动程序
- spring 配置只读事务_只读副本和Spring Data第1部分:配置数据库
- 运行sre10_在生产中运行Java:SRE的观点
- jq ajax提交评论,织梦评论怎么改成自己的jq ajax评论
- 2021年度618品牌营销分析报告
- 设置android:sharedUserId=android.uid.system 支持 sdcard读写
- python 线程间通信之Condition, Queue
- 教你如何防止网站被挂马!
- python中format函数用法简书_Python format 格式化函数
- 微信小程序API之showModal(Loding...)
- scala yield入门详解
- 最新MT2503平台技术资料集锦
- 东方时尚驾校的学车经历
- SICP 第一章的练习
- Flutter获取焦点
- C语言获取执行程序所在的目录路径
- 男人29岁发奋能成功吗
- 列表ul li前面的点如何更改颜色、形状、大小
- 如何查看浏览器http请求协议
- ai建立使用图案_怎么用AI创建无缝拼贴图案样式 Illustrator创建无缝拼贴图案教程...
热门文章
- CH376 SD卡走线 TF卡走线
- 一级建造师课件免费下载_注册建造师管理制度中的矛盾点总结!
- Java实战之亲戚关系计算器(swing版)(1)——项目简述
- 第14课 Altium Designer20(AD20)+VESC6.4实战教程:PCB总体布局介绍(北冥有鱼)
- 基于javaweb的股票交易模拟系统设计与实现-计算机毕业设计源码+LW文档
- 机场指挥调度解决方案
- 安全的即时沟通软件主要表现在哪些方面
- 原子核的加法wy.xuexi.biz
- 临床医生求职简历模板范文--带详细内容
- 榆林市科技馆项目变电所运维的研究与应用