当前位置: 首页 > news >正文

小白成长之路-Rsync+sersync实现数据实时同步

一、rsync概述

Rsync(Remote Sync)是Linux系统下的数据镜像备份工具。该工具可以实现远程同步、不同主机之间的同步,也能实现全量备份增量备份,保持数据链接和权限,并采用优化的同步算法,传输前对数据进行压缩,故该工具非常适合架构集中式备份异地备份。也支持本地复制或与ssh、rsync同步。

官网地址:https://rsync.samba.org/

优点:

  • scp无法备份大量数据,而rsync备份、统计、比较一起进行。
  • 可以备份整个目录树和文件系统,并保持文件原来的权限、时间、软硬链接。
  • 安装较容易,无需特殊权限。
  • 同步快速,首次同步完全备份,再次同步增量备份。
  • 可以使用scp和ssh等方式传输备份文件
  • 支持匿名传输
  • 选择性保持:符号链接、硬链接、文件属性、权限、时间等
  • 传输速度快:压缩再传输、解压再使用,减少带宽。
# 查看版本信息
[root@server ~]# rsync --version
rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,append, ACLs, xattrs, iconv, symtimes, preallocrsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

备份分类:

  • 完全备份:所有文件进行备份
  • 差异备份:备份自上次完全备份以来所有的修改
  • 增量备份:备份自上次备份依赖所作的修改

二、rsync运行原理

rsync采用C/S模式,即点到点的传输。通过xinetd服务监听873端口,再让xinetd服务下的rsync服务作出响应。

源主机:需要同步数据的服务器

目标主机:存放服务器同步数据的主机

数据同步方式:push 和 pull

  • 推push:主动同步,把数据发送给目标主机。服务器开销大,适合后端服务器较少的情况。【服务器备份推给rsync客户端存放,主动模式】

目的主机配置为 rsync 服务端,源主机周期性的使用 rsync 命令把要同步的目录推过去。

  • 拉pull:所有客户端主机去服务器上面拉数据,导致数据传输缓慢。【rsync客户端去服务器上拉数据,存放到客户端上,被动模式】

源主机配置为 rsync 服务端,目的主机周期性的使用 rsync 命令把要同步的目录拉过来。

三、案例

案例一:实现同步功能

# /etc/rsyncd.conf
#全局参数:对rsync服务器生效,优先级较低
port     # rsync占用端口号,默认是873
address  # 监听地址,一般是目标主机的IP地址
uid      # 运行进程的用户
gid      # 运行进程的用户组
max connections  # 最大连接数
lock file   # 最大连接数的锁文件
motd file   # 同步登录后的提示语,填写欢迎同步信息,自行创建
log file    # 日志文件
pid file    # 进程PID文件,自动生成
hosts allow  # 允许同步的主机#模块参数:针对某一个目录定义的参数,优先级较高
[mod_name]    # 同步目录名
comment       # 描述信息
path          # 同步目录
read only     # 同步目录的读写权限
exclude       
exclude from
include
include from
auth users   # 备份的用户,自动创建,与系统用户无关
secrets file  # 存放rsync用户的密码文件
hosts allow
hosts deny
list
timeout

准备两台虚拟机,一台客户机client,一台主机server3
主机:
/etc/rsyncd.conf
在这里插入图片描述

创建接受目录

mkdir -p /data/backup

初始文件

echo "Welcome to Backup Server" > /etc/rsyncd.motd

密码文件并赋予权限

echo "rsyncuser:123456" > /etc/rsync.passwd
chmod 600 /etc/rsync.passwd

重启服务
在这里插入图片描述
客户机:
创建目录

mkdir /data
该目录里面内容自行定义

然后开始同步文件
在这里插入图片描述
去主机验证
在这里插入图片描述
在主机创建一个文件
在这里插入图片描述
在客户机删除
在这里插入图片描述
再去主机验证,做到同步了
在这里插入图片描述

案例二、如果不想输入密码直接同步:
在客户机/etc/rsync.passwd里面写入和主机相同的密码并赋予和主机文件相同的权限
在这里插入图片描述

rsync -avz /data rsyncuser@192.168.115.112::data --password-file=/etc/rsync.passwd

然后没有输入密码就传给主机了
在这里插入图片描述
案例三、实时同步:
下载或者导入sersync
会生成一个目录进去后vim编辑confxml.html文件
在这里插入图片描述

html文件修改如下
在这里插入图片描述
在这里插入图片描述
然后对客户机再开一台客户机,在/data下创建或者重命名文件
在这里插入图片描述
在第一台客户机上监测

strace ./sersync2  -r -o ./confxml.xml 

在这里插入图片描述
再去主机验证:

在这里插入图片描述

总结:

  • rsync可以进行数据的同步,可以使用推和拉两种方式。推即源主机推数据到目标主机,拉即目标主机从源主机上拉数据。

  • push:服务器向客户端推送数据,要在目标主机上配置一个共享目录,在服务端上使用rsync命令推送数据给目标主机。

  • pull:客户端向服务器拉去数据,需要把服务器上的同步目录配置成一个共享目录,然后客户端去这个共享目录上拉去数据。

  • 仅使用rsync同步数据,不会记录数据的变化,每次同步都是同步整个目录,不适合大量数据的同步。

  • 结合使用rsync+sersync,sersync负责监控源主机上同步目录的数据变化,rsync负责同步变化的部分,极大地提高了同步的效率。

http://www.lryc.cn/news/571857.html

相关文章:

  • 基于集体智能长尾识别的超声乳腺病变亚型分类|文献速递-深度学习医疗AI最新文献
  • 从零接入高德路径规划2.0:实现精准物流距离计算实战
  • FPGA基础 -- Verilog行为级建模之initial语句
  • C++11 移动语义详解
  • 基于大模型的胆囊结石全周期诊疗方案研究报告
  • vue3 javascript 多字段求和技巧
  • BitsAndBytes(简称 BnB)是一个用于“压缩”大语言模型的工具包
  • OpenStack入门
  • Karate UI 基本概念之一
  • python校园服务交流系统
  • 自动打电话软件设计与实现
  • cloudera manager 页面启动nodemanager失败,后端没有启动 8040
  • Python装饰器decorators和pytest夹具fixture详解和使用
  • 【强化学习】【笔记】【ch.10】GRPO / DAPO - 目前最优强化微调算法
  • openEuler安装BenchmarkSQL
  • AI Agent 与 Agentic AI 有何不同?
  • 7.索引库操作
  • 代码随想录算法训练营day8
  • 前端打断点
  • SSRF7 SSRF漏洞的检测方式
  • Uniapp 中根据不同离开页面方式处理 `onHide` 的方法
  • 意法STM32F103C8T6 单片机ARM Cortex-M3 国民MCU 电机控制到物联网专用
  • Ubuntu22.04安装opengauss并配置远程访问、JDBC连接
  • 2025年中总结
  • 项目:Gitlab HSD CI/CD总结
  • 从零Gazebo中实现Cartographer算法建图(新目录)
  • Win11用户尽快删除更新!微软6月又推Bug
  • VGG-19(Visual Geometry Group)模型
  • Linux系统移植11:修改网络驱动
  • 获取jenkins中的构建数据