服务版本说明

服务 版本号 备注
rsync rsync-3.1.3
inotify-tools inotify-tools-3.14

部署环境

系统环境:centos7.6
主机名:yhcs_1、yhcs_2
IP:192.168.43.176、192.168.43.177

下载路径

rsync下载:https://download.samba.org/pub/rsync/
inotify-tools下载:https://github.com/rvoicilas/inotify-tools/wiki

安装约定并创建目录

安装包存放目录:/data/software/rsync
安装包存放目录:/data/software/inotify-tools
安装目录:/usr/local/rsync
安装目录:/usr/local/inotify-tools
同步目录:/data/backup

[root@yhcs_1 ~]# mkdir -p /data/software/rsync
[root@yhcs_1 ~]# mkdir -p /data/software/inotify-tools
[root@yhcs_1 ~]# mkdir -p /data/backup

上传tar包并解压

[root@yhcs_1 ~]# cd /data/software/rsync
[root@yhcs_1 rsync]# rz -E
rz waiting to receive.
[root@yhcs_1 rsync]# tar -zxvf rsync-3.1.3.tar.gz
[root@yhcs_1 rsync]# cd /data/software/inotify-tools
[root@yhcs_1 inotify-tools]# rz -E
rz waiting to receive.
[root@yhcs_1 inotify-tools]# tar -zxvf inotify-tools-3.14.tar.gz

编译安装

[root@yhcs_1 rsync]# cd rsync-3.1.3
[root@yhcs_1 rsync-3.1.3]# ./configure --prefix=/usr/local/rsync/
[root@yhcs_1 rsync-3.1.3]# make && make install

配置文件(服务端)

[root@yhcs_1 ~]# cat /usr/local/rsync/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 4
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2
read only=yes #只读模式,后面部署inotify实时同步时需要改成false
write only=no
hosts allow=192.168.43.0/24
[databackup]
path = /data/backup/
list=no
ignore errors
auth user=rsync_eden
secrets file = /etc/rsyncd.passwd
comment = data
[datatest] #取个同步标签名称,后面使用同步命令时需要
path = /datatest/ #备用目录,本次不测试,有需要可直接改成自己需要的目录
list=no
ignore errors
auth user=rsync_eden
secrets file = /etc/rsyncd.passwd
comment = datatest

[root@yhcs_1 ~]# cat /etc/rsyncd.passwd
rsync_eden:qwe321 #设置同步的账户和密码,前者是配置文件中的auth user,后者是密码
[root@yhcs_1 ~]# chmod 600 /etc/rsyncd.passwd #赋予权限

启动服务

[root@yhcs_1 ~]#/usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
[root@yhcs_1 ~]# ps -ef |grep rsync
root 10879 1 0 10:55 ? 00:00:00 /usr/local/rsync/bin/rsync --daemon --config=/usr/local/rsync/rsyncd.conf
[root@yhcs_1 ~]# netstat -na |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN
tcp6 0 0 :::873 ::? LISTEN

客户端部署

#先按主服务器编译安装rsync
[root@yhcs_2 ~]# cat /etc/rsyncd.passwd
qwe321
#与服务器端中的 rsyncd.passwd中的密码对应
[root@yhcs_2 ~]# chmod 600 /etc/rsyncd.passwd #赋予权限
注意:仅需要服务器端开启rsync服务,客户端不需要开启

同步测试

#测试从yhcs_1(172.168.43.176)同步到yhcs_2(172.168.43.177)
#查看服务器端的/data/backup(配置文件设置的同步目录)下有哪些文件
[root@yhcs_1 ~]# cd /data/backup/
[root@yhcs_1 backup]# ls
[root@yhcs_1 backup]# echo hello > rsync_test.txt #创建文件用于测试
[root@yhcs_1 backup]# ls
rsync_test.txt
#查看客户端的/data/backup下有哪些文件
[root@yhcs_2 ~]# cd /data/backup/
[root@yhcs_2 backup]# ls
[root@yhcs_2 backup]#
#执行同步命令
[root@yhcs_2 backup]# /usr/local/rsync/bin/rsync -avzP --delete --password-file=/etc/rsyncd.passwd rsync_eden@192.168.43.176::databackup /data/backup/
receiving incremental file list
./
rsync_test.txt
6 100% 5.86kB/s 0:00:00 (xfr#1, to-chk=0/2)

sent 50 bytes received 134 bytes 122.67 bytes/sec
total size is 6 speedup is 0.03
[root@yhcs_2 backup]# ls
rsync_test.txt
#同步命令简述:rsync_eden是服务器端的auth user中的用户;@后的地址是服务端的IP地址;::是服务器端自定义的标签的名称(也就是服务端配置文件里[databackup]); /data/backup/是需要同步到本地(客户端)的目录,可修改成自己想要放到的目录(但操作前请查询rsync的同步参数的意义,不要用错参数,导致删错数据。如–delete参数,会把本地目录与服务端目录做对比,服务端没有的数据都删除掉)

#以上rsync的配置方法在网上比较常见,是从客户端主动获取获取服务端的数据。后面部署inotify时,就需要从修改下同步命令,把客户端的数据上传到服务器,并把inotify部署到客户端yhcs_2上。

部署inotify

[root@yhcs_2 ~]# cd /data/software/inotify/inotify-tools-3.14
[root@yhcs_2 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
[root@yhcs_2 inotify-tools-3.14]# make && make install

编写实时同步脚本

#inotify软件命令
/usr/local/inotify/bin/inotifywait #开启实时监控服务(监控文件/目录数据变化)
/usr/local/inotify/bin/inotifywatch 统计事件变化次数
(1)rsync同步命令
/usr/local/rsync/bin/rsync -avz /data/backup/ rsync_eden@192.168.43.176::databackup --password-file=/etc/rsyncd.passwd
(2)inotify服务命令
/usr/local/inotify/bin/inotifywait -mrq --format ‘%w%f’ -e create,close_write,delete /data/backup/
(3)测试同步命令
[root@yhcs_2 etc]# /usr/local/rsync/bin/rsync -avz /data/backup/ rsync_eden@192.168.43.176::databackup --password-file=/etc/rsyncd.passwd
sending incremental file list
rsync: read error: Connection reset by peer (104)
rsync error: error in socket IO (code 10) at io.c(785) [sender=3.1.3]
#该报错网上查了一下,有说是配置文件不存在,有说是密码文件权限不够,具体排查了一下,发现这些文件都符合要求。最后查看了下系统日志,发现报错ERROR: module is read only,这个就是前面配置文件rsync.conf文件中read only=yes导致的,需要开通权限read only=false。

#为什么之前测试rsync同步时没有报错呢?那是因为同步的命令使得获取同步的方式不一致。前面是yhcs_1传数据到yhcs_2,现在是yhcs_2上传数据到yhcs_1,因此需要yhcs_1的配置文件把只读模式关掉,允许写入。

(4)编写实时同步脚本
#脚本没有进行更多的优化,后期有时间再做修改
[root@yhcs_2 backup]# cat /data/inotify.sh
#!/bin/bash

/usr/local/inotify/bin/inotifywait -mrq --format ‘%w%f’ -e create,close_write,delete /data/backup/ | while read line
do
/usr/local/rsync/bin/rsync -avz --delete /data/backup/ rsync_eden@192.168.43.176::databackup --password-file=/etc/rsyncd.passwd
done
(5)执行脚本(放在后台运行)
[root@yhcs_2 backup]# sh /data/inotify.sh &
[1] 13804

测试实时同步

#在yhcs_2 /data/backup目录下进行文件的增删改
[root@yhcs_2 backup]# ls
[root@yhcs_2 backup]# mkdir test
[root@yhcs_2 backup]# echo test > 1.txt
[root@yhcs_2 backup]# echo 123 >> 1.txt
[root@yhcs_2 backup]# rm -rf 1.txt
[root@yhcs_2 backup]# ls
test

#查看yhcs_1 /data/backup目录的变化
[root@yhcs_1 backup]# ls
test
[root@yhcs_1 backup]# cat 1.txt
test
[root@yhcs_1 backup]# cat 1.txt
test
123
[root@yhcs_1 backup]# ls
test

#注:可以 sh /data/inotify.sh 执行脚本,直观的观察数据的实时同步

参考文档(部分)

rsync常见问题及解决办法:https://blog.whsir.com/post-392.html
rsync的daemon模式:https://www.cnblogs.com/lemon-le/p/8395438.html
inotify+rsync实现实时同步:https://www.cnblogs.com/clsn/p/8022625.html#auto_id_26
真正的inotify+rsync实时同步 彻底告别同步慢:https://www.cnblogs.com/ginvip/p/6430986.html#4375148

心不死,土不埋,学无止境

inotify-tools-3.14+rsync3.1.3实时同步安装部署相关推荐

  1. inotify+rsync实时同步服务部署

    环境:服务端 192.168.6.30(安装 rsync) /data/share :客户端 192.168.6.38(安装 inotufy+rsync)/nfsbackup 主流程:https:// ...

  2. rsync实时同步服务部署

    部署rsync服务 一.需求:把客户端文件同步到服务端指定位置服务端:备份服务器为 172.16.3.164客户端:推送服务器为 172.16.3.94 二.基础知识: rsync 分为服务器端.客户 ...

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

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

  4. rsync同步操作 inotify实时同步 cobbler装机平台 DNS主从结构

    目录 rsync同步操作 rsync基本使用 rsync+ssh同步:远程同步 实时同步 inotify实时同步 inotifywait监控 cobbler装机平台 cobbler简介 基本概念: 装 ...

  5. inotify+rsync实现实时同步

    1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 发现目录中数据产生变化,就利用rsync服务推送到备份服务器上 1.2 实现实时同步的方 ...

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

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

  7. linux 文件双向同步,Linux文件双向实时同步rsync

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 echo"/usr/sersync/sersync2-d-o/usr/sersync/confxml.xm ...

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

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

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

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

最新文章

  1. 【VS开发】【电子电路技术】RJ45以太网传输线研究
  2. IC/FPGA笔试题分析(六)用16bit加法器IP核实现8bit乘法运算(文末彩蛋)
  3. 货郎担问题TSP(dp解法)
  4. Dubbo架构设计详解--转载
  5. 关闭生成调试信息和嵌入清单
  6. 机器学习_机器不学习:从Spark MLlib到美图机器学习框架实践
  7. vue 动态设置背景图片
  8. go语言一天入门(上)
  9. 《Python Cookbook 3rd》笔记(3.9):大型数组运算
  10. 操作系统进程调度算法图解(FCFS、轮转、SPN、SRT、HRRN、反馈)
  11. 货车定位服务器维护是什么意思,有关货车日常维护的主要内容
  12. 关于设计RPC框架的几个问题
  13. 优客365 v2.9版本 后台存在SQL注入
  14. 袁玉玮:简介人工智能在基金界的应用现状(四)
  15. 如何用万用表检测电路
  16. Air720H模块MQTT协议的AT指令流程
  17. Camunda/Flowable/Activiti技术发展史/盘古BPM框架对比最新版
  18. PSQLException: ERROR: permission denied: no privilege to create a readable gpfdist(s) external table
  19. 央视力荐的这套书,让5岁孩子看漫画,秒懂物理,学习早“开窍”!
  20. 【工作流引擎--Snaker介绍】

热门文章

  1. mysql失物招领系统_java+ssh+mysql高校失物招领系统
  2. 春节档大放异彩背后:看电影为什么能变成新年俗?
  3. MarchingCubes 复现笔记
  4. Android开发大牛们的博客
  5. 元柚话TK:海外抖音TikTok如何助力国货品牌出海呢?
  6. intel服务器安装系统蓝屏,驱动技巧:解决装完部分驱动Windows会出现蓝屏的问题...
  7. 为什么说腾讯云TDSQL是金融行业的“杀手锏”级应用?
  8. 基于51单片机可控电压0-5V输出PWM方式PID稳压
  9. endnote中英混排时“等“与“et al”的处理
  10. UE进阶实例40(STL与Unreal的智能指针)