前言
在我们实际应用中,常会对服务器的数据做相关的备份,比如我们最常见的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

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

被折叠的 条评论
为什么被折叠?



