当前位置: 首页 > 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负责同步变化的部分,极大地提高了同步的效率。

相关文章:

  • dotnet core webapi EF 连接mysql数据库
  • 洪千武—华为海外HRBP
  • Ant Design Charts入门教程
  • 【Datawhale组队学习202506】零基础学爬虫 01 初始爬虫
  • 17.group by分组统计
  • 华为OD-2024年E卷-中文分词模拟器[200分] -- python
  • 1、做中学 | 一年级上期 Golang简介和安装环境
  • 基于Android的打印系统的设计与实现
  • PHP vs Python (Flask/Django) vs Java (SpringBoot) vs Vue:2024全栈技术终极对决
  • 最大公约数
  • UML建模
  • Ubuntu 20.04离线安装Nvidia-docker
  • 2025年全国技术贸易创新实践案例:AI编辑助手平台助力“一带一路”数字媒体产业高质量发展
  • MySQL-多表查询深度解析与实战指南
  • 如何计算股票复权因子与复权行情
  • iOS端网页调试 debug proxy策略:项目中的工具协同实践
  • 2025年渗透测试面试题总结-渗透测试工程师(题目+回答)
  • 正态分布:AI大模型中的概率统计基石
  • [特殊字符] NarratoAI:AI驱动的短剧解说视频自动化生成工具整合包
  • ChromaDB深度技术研究报告
  • 佛山网站建设维护/关键词网站
  • 平面设计接单赚钱吗/游戏优化软件
  • oa办公系统开发/排名优化系统
  • 备案需要网站建设方案书/100个成功营销策划案例
  • 简单网站设计草图/优化营商环境应当坚持什么原则
  • 专门做布料的网站/郑州seo外包公司哪家好