实验环境: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实现实时数据同步的更多相关文章

  1. Linux学习系列之Inotify+Rsync实现实时数据同步

    Inotify简介 inotify介绍 inotify是一种强大的.异步的文件系统监控机制,linux内核从2.6.13起,加入了inotify的支持,通过inotify可以监控文件系统中添加.删除. ...

  2. Inotify+rsync实现实时数据同步

    使用rsync可以实现数据同步,但是即使使用crontab定时任务最小执行间隔为1分钟,在数据实时性要求比较高场合需使用inotify+rsync实现实时同步 下载inotify wget https ...

  3. Linux系统实时数据同步inotify+rsync

    一.inotify简介 inotify是Linux内核的一个功能,它能监控文件系统的变化,比如删除.读.写和卸载等操作.它监控到这些事件的发生后会默认往标准输出打印事件信息.要使用inotify,Li ...

  4. rsync+inotify实时数据同步多目录实战

    rsync+inotify实时数据同步多目录实战       inotify配置是建立在rsync服务基础上的配置过程 操作系统 主机名 网卡eth0 默认网关 用途 root@58server1 1 ...

  5. rsync+inotify实时数据同步单目录实战

    rsync+inotify实时数据同步单目录实战   rsync+inotify实时数据同步单目录实战 inotify是一个强大的.细粒度的.异步的文件系统事件监控机制,linux内核从2.6.13起 ...

  6. 【linux运维】rsync+inotify与sersync+rsync实时数据同步笔记

    Rsync(remote sync)远程同步工具,通过rsync可以实现对远程服务器数据的增量备份通过,但rsync自身也有缺陷,同步数据时,rsync采用核心算法对远程服务器的目标文件进行对比,只进 ...

  7. 利用inotify和rsync服务实现数据实时同步

    文件定时同步的实现: 利用rsync结合cron计划任务实现: rsync -av --delete /data/ 10.0.0.12:/back -a:保留文件属性 -v:显示过程 -delete: ...

  8. sersync+rsync实时数据同步

    sersync+rsync实时数据同步 1.相关背景介绍 前面有关文章配置实现了rsync增量同步以及配置为定时同步,但是在实际生产环境中需要实时的监控数据从而进行同步(不间断同步),可以采取inot ...

  9. Tapdata Real Time DaaS 技术详解 PART I :实时数据同步

      摘要:企业信息化过程形成了大量的数据孤岛,这些并不连通的数据孤岛是企业数字化转型的巨大挑战.Tapdata Real Time DaaS 采用的CDC模式,具有巨大的优势,同时是一个有技术壁垒的活 ...

随机推荐

  1. spring security实现记录用户登录时间等信息

    目录 spring security实现记录用户登录时间等信息 一.原理分析 二.实现方式 2.1 自定义AuthenticationSuccessHandler实现类 2.2 在spring-sec ...

  2. 局域网-断网&劫持(kali)

    1.查看局域网中的主机 fping –asg 192.168.1.0/24 2.断网 arpspoof -i wlan0 -t 192.168.100 192.168.1.1 (arpspoof  - ...

  3. canvas实现饼状图

    效果图如下: html: <canvas id="myCanvas" width="500" height="500">< ...

  4. Java多线程编程(4)--线程同步机制

    一.锁 1.锁的概念   线程安全问题的产生是因为多个线程并发访问共享数据造成的,如果能将多个线程对共享数据的并发访问改为串行访问,即一个共享数据同一时刻只能被一个线程访问,就可以避免线程安全问题.锁 ...

  5. 【LEETCODE】68、动态规划,medium级别,题目:95、120、91

    package y2019.Algorithm.dynamicprogramming.medium; /** * @ProjectName: cutter-point * @Package: y201 ...

  6. MOOC 数据库笔记(三):关系模型之基本概念

    关系模型的基本概念 关系模型简述 1.最早由E.F.Codd在1970年提出. 2.是从表(Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义的基础上,引入集合理论与逻辑学 ...

  7. mysql修改后启动my.cnf报错Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/localhost.localdomain.pid).

    mysql中文乱码解决 mysql修改my.cnf后启动报错Starting MySQL... ERROR! The server quit without updating PID file (/v ...

  8. SpringBoot整合freemarker 引用基础

    原 ElasticSearch学习笔记Ⅲ - SpringBoot整合ES 新建一个SpringBoot项目.添加es的maven坐标如下: <dependency> <groupI ...

  9. springcolud 的学习(一),架构的发展史

    一.传统架构 传统的SSH架构,分为三层架构 web控制层.业务逻辑层.数据库访问层. 传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务没有进行拆分,都 ...

  10. java之spring之spring整合hibernate

    这篇讲下spring和hibernate的整合 目录结构如下: 1.新建java项目 2.导入jar包 antlr-2.7.7.jar aopalliance.jar aspectjweaver.ja ...