centos7.9部署rsync+inotify(实现远程,实时同步,最后有脚本)

本文详细介绍了如何在CentOS 7.9上利用rsync和inotify实现远程实时文件同步,包括工作原理、部署步骤以及配置注意事项。rsync的增量同步和inotify的文件变化监测相结合,提供了高效的数据备份解决方案,适用于大规模文件同步场景。

前言

在我们实际应用中,常会对服务器的数据做相关的备份,比如我们最常见的tar打包备份、cp备份、scp远程拷贝以及mysql数据库的相关备份,甚至我们的drbd远程存储实时同步(不过这个方案已经很老了)等等。实际上从另一方面来说,这些备份操作保证了我们的数据的安全性,防止我们误操作带来的损失。而随着数据量的不断增加,很多数据显得是越来越重要,备份数据依然是我们运维工程师的首要任务。本次主要讲述了rsync+inotify实现远程实时同步。我们都知道 rsync 是一个很好的备份同步数据的工具,但是它不能够自动当目录中的文件发生变化时就进行同步,所以inotify的作用就是触发rsync实现同步备份操作。


一、介绍

  • rsync 是一个非常聪明的工具,它可以比较两个文件夹中的文件,然后仅仅传输发生变化的部分。这就像你只发送一封电子邮件中的变更部分,而不是整个邮件内容一样。rsync 确保目标文件夹始终与源文件夹相匹配。

  • inotify 是一个在Linux操作系统上的特殊功能,它可以监视文件夹中的变化。当有文件添加、修改或删除时,它会迅速告诉你。这就像你有一个小助手,时刻关注着文件夹的变动。

把这两者结合起来,你可以创建一个实时同步系统:每当inotify注意到文件夹有变化,它会告诉rsync只传输变化的那一小部分,然后rsync会确保这个变化被发送到另一台电脑上。这样,你就可以确保两台电脑上的文件一直保持同步,就像是有一个自动的文件传送管道连接着它们一样。这对于备份文件、共享内容或者仅仅保持工作环境一致非常有用。

二,工作原理

1.命令或者脚本运行之后,同步端开始构造FileList,FileList就是被同步端需要同步的文件索引,name–>id

2.同步端构造完成之后,将FileList发送到被同步端,被同步端rsync处理发送的FileList,然后开始同步。

3.第二次同步时,因为两边的都有文件,同步端构造发送这边的FileList,被同步端rsync处理同步端发送的FileList,根据MD5值比较,删除同步端已经相同的文件信息,保留不存在和更新的文件,来构建新的FileList

4.同步端收到被同步端新的FileList,然后开始同步文件到同步端

5.在rsync-daemon认证方式下,默认监听tcp的873端口

6.在rsync-daemon认证下,rsync可以把密码写入到一个文件中

注:被同步端的rsync必须启动和配置文件。同步端可以不起动服务,但必须有这个应用

7.ssh认证:通过ssh隧道进行传输,类似于scp工具,同步操作不在局限于rsync中定义的同步文件夹,并且双方只要安装rsync,也不要双方启动rsync。例如:

rsync -avz /root/tongbu root@192.168.1.1:/root/

若rsync服务端ssh为非标准端口,可通过rsync的-e参数进行端口指定。使用方式如下:

rsync -avz /root/tongbu -e ‘ssh -p1234’ root@192.168.1.1:/root/

优点:1.安全性高;
           2.备份迅速,使用同步算法,只比较变化;
           3.支持增量备份;
           4.保存源目录整个目录树和文件系统;
           5.保持源文件的权限、时间、软硬连接等;
           6.无需特使权限即可安装;
           7.优化流程和比较高的文件传输效率;
           8.多样方式来传输文件;
           9.支持匿名运行,方便网站镜像;
          10.与scp相比,rsync传输速度远在scp之上。(局域网测试,rsync是scp的20倍)
          11.解决对实时性要求不高的数据备份需求。

不足之处:1.同步数据,需要扫描所有文件进行对比,才进行差量传输。如果文件数量达到百万甚至千万级,扫描文件对比文件将非常耗时,降低了rsync效率。
                  2.rsync不能实时地区监测、同步数据。虽然可以通过守护进程方式触发同步,但两次动作间有时间差,导致数据不一致,无法应对出现故障时完全恢复数据。

三,部署

3.1,实验环境

测试环境为centos7.9
关闭selinux和防火墙
源服务器地址:192.168.47.147
目标服务器地址: 192.168.47.148
目的:将源服务器的/root/tongbu目录实现同步到目标服务器的/root/file_bak目录下

3.2,配置目标服务器(同步端)

(1)安装rsync

[root@karms ~]# yum install -y rsync-3.1.2-12.el7_9.x86_64  

(2)修改配置文件

[root@karms ~]# mv /etc/rsyncd.conf /etc/rsyncd.conf.bak
[root@karms ~]# vim /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pidfile = /var/run/rsyncd.pid
lock file = /var/r
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值