centos7部署inotify与rsync实现实时数据同步
实验环境:CentOS Linux release 7.6.1810
node1:192.168.216.130 客户端(向服务端发起数据同步)
node2:192.168.216.132 服务端(接收来自客户端的数据)
本次实验为单向同步
1、在两个节点安装rsync
yum -y install rsync
2、在node2节点修改rsyncd.conf配置文件,注意hosts allow允许数据同步的IP、path同步目录、 comment备注信息、auth users认证用户、secrets file密钥文件,其参数值需要和实际一致
cat /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode # See rsyncd.conf man page for more options. # configuration example: uid = 0
gid = 0
use chroot = no
max connections = 200
timeout = 1000
pid file = /var/run/rsyncd.pid
# exclude = lost+found/
transfer logging = yes
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
reverse lookup = no
hosts allow = 192.168.216.0/24
# timeout = 900
# ignore nonreadable = yes
# dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # [ftp]
# path = /home/ftp
# comment = ftp export area [data]
path = /data/
comment = data
ignore errors
read only = no
#write only = yes
list = false
auth users = postgres
secrets file = /etc/rsync/rsync.passwd
3、在node2上启动rsync服务,并创建用户认证文件,注意认证文件中的用户必须实际存在,自行创建用户
启动服务
systemctl start rsyncd
创建用户名/密码认证文件
echo "postgres:123456" > /etc/rsync/rsync.passwd
修改认证文件权限为600
chmod 600 /etc/rsync/rsync.passwd
查看认证文件
cat /etc/rsync/rsync.passwd
postgres:123456
4、在node1上创建用户认证文件
node1节点只需要存放密码内容即可
echo "123456" > /etc/rsync/rsync.passwd
cat /etc/rsync/rsync.passwd
chmod 600 /etc/rsync/rsync.passwd
5、在node1上执行以下命令,手动测试是否可以正常同步数据,同步node1上data目录的文件至node2上的data目录
touch /data/a{1..100}
rsync -avz --password-file=/etc/rsync/rsync.passwd /data/ postgres@192.168.216.132::data
此时可以看到node2下的data目录数据和node1一致

6、在node1上安装inotify-tools,这里采用编译安装,也可以执行yum install inotify-tools安装
cd /tmp/
wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/usr/local/include/
make && make install
7、在node1上创建shell脚本用于实时监控目录数据变化,并自动完成数据同步
vi inotify_rsync.sh
#!/bin/bash
SRC='/data/'
DEST='postgres@192.168.216.132::data'
inotify_home=/usr/local/include/
${inotify_home}/bin/inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |
while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync/rsync.passwd $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done
这里引入一个--delete 选项,表示客户端上的数据要与服务器端完全一致,如果 /data目录中有服务器上不存在的文件,则删除。最终目的是让客户端/data目录上的数据完全与服务器上/data保持一致;用的时候要 小心点,最好不要把已经有重要数所据的目录,当做本地更新目录,否则会把你的数据全部删除;
注意脚本中变量SRC(同步目录)、DEST(服务端信息)、inotify_home(inotify-tools安装目录)需要和实际目录一致
8、后台运行脚本sh inotify_rsync.sh &

参考:https://blog.51cto.com/14234525/2396910
centos7部署inotify与rsync实现实时数据同步的更多相关文章
- Linux学习系列之Inotify+Rsync实现实时数据同步
Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...
- Inotify+rsync实现实时数据同步
使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...
- Linux系统实时数据同步inotify+rsync
一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...
- rsync+inotify实时数据同步多目录实战
rsync+inotify实时数据同步多目录实战 inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...
- rsync+inotify实时数据同步单目录实战
rsync+inotify实时数据同步单目录实战 rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...
- 【linux运维】rsync+inotify与sersync+rsync实时数据同步笔记
Rsync(remote sync)远程同步工具,通过rsync可以实现对远程服务器数据的增量备份通过,但rsync自身也有缺陷,同步数据时,rsync采用核心算法对远程服务器的目标文件进行对比,只进 ...
- 利用inotify和rsync服务实现数据实时同步
文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/ 10.0.0.12:/back -a:保留文件属性 -v:显示过程 -delete: ...
- sersync+rsync实时数据同步
sersync+rsync实时数据同步 1.相关背景介绍 前面有关文章配置实现了rsync增量同步以及配置为定时同步,但是在实际生产环境中需要实时的监控数据从而进行同步(不间断同步),可以采取inot ...
- Tapdata Real Time DaaS 技术详解 PART I :实时数据同步
摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...
随机推荐
- BFS --- 素数环
<传送门> [题目大意]对话很坑爹,不过很有意思,直接看题干就可以了.给你两个四位数a和b,现在要你从a经过变换得到b,并且变换的中间的每一位都要是素数,并且相邻两个素数之间只能有一个位不 ...
- Django框架(十)--ORM多对多关联关系三种创建方式、form组件
多对多的三种创建方式 1.全自动(就是平常我们创建表多对多关系的方式) class Book(models.Model): title = models.CharField(max_length=32 ...
- Mysql练习题(1)
表名和字段------------------------------------------------------------------------------–1.学生表Student(s_i ...
- 【转】Isim——基本技巧
来源:电子产品世界: 注:本文由NingHeChuan本人多出整理所得,原文章图片不清晰,自己整理配图后重新发表 安装好ISE,系统已经自带了ISim仿真软件,相比于专业的仿真软件Modelsim,I ...
- Http异常状态码解决方案。
415出现的原因:一般是传参的时候传的是json格式的参数,解决办法:先添加信息头管理器,然后在里面添加:(名称:Content-type)(值:application/json),这样就可以识别js ...
- git安装用法和常用命令
目录 git 下载 安装 git 工作中常用命令 Git常用命令汇总以及其它相关操作 或者 常出错误: 常用修改: 题外话(相关概念) git 下载 安装 1.下载Git,官网地址:https://g ...
- Windows查看端口使用状况(转)
转:https://www.cnblogs.com/lixuwu/p/5898354.html 阅读目录 1 查看windows所有端口进程 2 查询指定端口 使用端口是我们在进行远程或者打印机等都会 ...
- 【转】Dubbo分布式服务框架
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的远程服务调用方案. Dubbo架构 官网架构图: 节点角色说明: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务 ...
- 手写DAO框架(七)-如何保证连接可用
版权声明:本文为博客园博主「水木桶」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明.原文链接:https://www.cnblogs.com/shuimutong/p ...
- 特征选择之FeatureSelector工具
项目地址:https://github.com/WillKoehrsen/feature-selector 特征选择(feature selection)是查找和选择数据集中最有用特征的过程,是机器学 ...