rsync 远程同步 基础介绍

目录

一     Rsync 简介

1,rsync  是什么

2,rsync 中的发起端  同步源

3,同步方式

4,备份的方式

5,常用Rsync命令

6, 配置源的两种表达方法

7,rsync做本地复制时与cp 对比

二,下行同步与 上行同步

1,上行同步

2,下行同步

3,总结

4,架构图

5,如何记忆

类比网络流量

三   实验模拟rsync 本地同步

​编辑

四   实验模拟rsync 远程同步

1,实验环境

2,99服务端

2.1 改配置文件

2.2  为备份账户创建数据文件

2.3  保证所有用户对源目录/var/www/html 都有读取权限

2.4  启动 rsync 服务程序

3, 77客户端  (发起端)

3.1 两种方式请求同步

3.2 做免密交互

3.3 请求同步中  delete 的用法

五     rsync 常见报错

六   总结

1,请求同步语法

2,生产环境rsync  使用ssh 账户


一     Rsync 简介

1,rsync  是什么

rsync(Remote Sync,远程同步) 是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。
Rsync 是 Linux 系统下的数据镜像备份工具,使用快速增量备份工具 Remote Sync 可以远程同步, 可以在不同主机之间进行同步,可实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法, 传输前执行压缩,因此非常适合用于架构集中式备份或异地备份等应用。同时Rsync支持本地复制,或者与其他 SSH、rsync 主机同步
 

2,rsync 中的发起端  同步源

在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。
 

3,同步方式

(1)完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。 
(2)差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。
(3)增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性

4,备份的方式

1、发起端:负责rsync  同步操作的客户机叫做发起端,通知服务器我要备份你的数据
2、备份源:负责响应来自客户机rsync   同步操作的服务器叫做备份源,需要备份的服务器
3、服务端:运行rsyncd服务,一般来说,需要备份的服务器
4、客户端:存放备份数据
 

5,常用Rsync命令

基本格式:rsync [选项] 原始位置 目标位置

 常用选项:

-r:递归模式,包含目录及子目录中的所有文件。
-l:对于符号链接文件仍然复制为符号链接文件。
-v:显示同步过程的详细(verbose)信息。
-z:在传输文件时进行压缩(compress)。
-a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-o:保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留 ACL 属性信息。
-D:保留设备文件及其他特殊文件。
--delete:删除目标位置有而原始位置没有的文件。
--checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。
 

6, 配置源的两种表达方法

格式一:
用户名@主机地址::共享模块名
rsync -avz backuper@192.168.10.22::wwwroot /opt/

格式二:
rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@192.168.10.22/wwwroot /opt/

7,rsync做本地复制时与cp 对比

cp:   将 我们源文件完整复制 到 指定路径下 “全备"

rsync 本地复制:  

①首先就按那个源文件和目标位置的文件对比,找出差异部分

②根据目的位置的文件与源文件差异的部分,进行一致性的同步

即:

 增量复制与全量复制

  • rsync:在本地复制时,rsync 仍然保留了其核心特性——增量复制。它通过比较源文件和目标文件的内容,仅复制差异部分,这对于复制大型文件或频繁更新的目录非常高效,尤其是在多次重复复制同一源到同一目标时,只需传输变动部分,大大节省时间和带宽。

  • cp:相比之下,cp 执行的是全量复制。每次复制时,不论目标文件是否存在或是否与源文件有差异,cp 都会完整地重新复制整个文件内容。对于初次复制或源文件完全改变的情况,cp 和 rsync 效果相当。但在后续的重复复制中,如果只有少量数据变动,cp 的效率较低,因为它会无差别地复制整个文件。

二,下行同步与 上行同步

rsync 上行同步(Upstream Sync)和 rsync 下行同步(Downstream Sync)是使用 rsync 工具进行数据同步时的两种不同方向的同步策略,它们分别描述了数据流动的方向:

1,上行同步

上行同步是指从本地(发起端)向远程(同步源)服务器推送数据的过程。在这种模式下:

  • 本地机器作为数据的源头,通常包含需要更新或备份到远程服务器的文件和目录。
  • 远程服务器作为数据的接收端,等待接收并整合来自本地机器的更改。

上行同步常见于以下场景

  • 备份本地数据到云端:用户将个人计算机或服务器上的重要数据同步到云存储服务或远程备份服务器,确保数据的安全性和可用性。
  • 代码版本控制提交:开发者将本地开发环境中的代码更改推送到中央代码仓库(如Git服务器),实现团队协作和版本控制。
  • 日志或监控数据上传:设备或系统将生成的日志文件、监控数据等实时或定时上传到中心分析服务器,便于集中管理和分析。

实时上行同步可以通过结合 rsync 和 inotify 等工具实现。inotify 能够监控本地文件系统的事件(如文件创建、修改、删除),一旦检测到变化,立即触发 rsync 命令执行同步操作,确保远程服务器几乎实时地获得本地的最新数据。

2,下行同步

下行同步则是从远程(同步源)服务器拉取数据到本地(发起端)的过程。在这个过程中:

  • 远程服务器作为数据的源头,存储着需要同步到本地机器的文件和目录。
  • 本地机器作为数据的接收端,通过 rsync 命令请求并接收远程服务器上的数据更新。

下行同步常用于:

  • 软件分发与更新:本地机器从中央软件仓库下载最新的软件包、更新文件或配置信息。
  • 数据恢复与回滚:从备份服务器下载最近的备份数据到本地,用于恢复丢失的数据或回滚到先前的状态。
  • 内容分发网络(CDN)刷新:边缘节点从源站下载更新的内容,确保 CDN 提供的服务始终与源站内容一致。

3,总结

rsync 上行同步rsync 下行同步的主要区别在于数据流动的方向:

  • 上行同步是从本地到远程,用于备份、提交更新或上传数据到中央服务器。
  • 下行同步是从远程到本地,用于下载、恢复数据或更新本地内容至最新状态。

在实际使用中,根据业务需求和数据流向选择合适的同步方向,并可以结合定时任务、事件驱动机制(如 inotify)等方式实现自动化、实时的同步过程。

4,架构图

5,如何记忆

记忆“rsync 上行同步”与“rsync 下行同步”的概念,可以借助以下几种方法来帮助您加深印象和理解:

类比网络流量

上行同步:类比互联网中的“上行流量”,即数据从您的计算机(本地)上传到互联网上的某个服务器(远程)。想象您正在上传一个文件到云存储服务或者提交代码到远程仓库,数据从您的电脑“向上”流向互联网上的目标位置。

下行同步:与此相反,类比互联网中的“下行流量”,即数据从互联网上的服务器(远程)下载到您的计算机(本地)。想象您正在下载一个软件更新或从备份服务器恢复数据,数据从互联网“向下”流向您的电脑。

三   实验模拟rsync 本地同步

类似cp  的用法

四   实验模拟rsync 远程同步

1,实验环境

此次搭建rsync 下行同步   99为服务端   77为客户端

即客户端同步服务端的数据     

2,99服务端

2.1 改配置文件

代码如下:

vim /etc/rsyncd.conf				#添加以下配置项
uid = root
gid = root
use chroot = yes										#禁锢在源目录
address = 192.168.10.18								    #监听地址
port 873												#监听端口 tcp/udp 873,可通过cat /etc/services | grep rsync查看
log file = /var/log/rsyncd.log							#日志文件位置
pid file = /var/run/rsyncd.pid							#存放进程 ID 的文件位置
hosts allow = 192.168.10.0/24							#允许访问的客户机地址
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z		#同步时不再压缩的文件类型[wwwroot]												#共享模块名称
path = /var/www/html									#源目录的实际路径
comment = Document Root of www.kgc.com
read only = yes											#是否为只读
auth users = backuper									#授权账户,多个账号以空格分隔
secrets file = /etc/rsyncd_users.db						#存放账户信息的数据文件#如采用匿名的方式,只要将其中的“auth users”和“secrets file”配置项去掉即可。
#为备份账户创建数据文件

配置文件显示如下:

2.2  为备份账户创建数据文件

即放用户名和密码的

记得加权限 只能加600

2.3  保证所有用户对源目录/var/www/html 都有读取权限

2.4  启动 rsync 服务程序

#启动 rsync 服务,以独立监听服务的方式(守护进程)运行

查看是否启动

3, 77客户端  (发起端)

3.1 两种方式请求同步

格式一:
用户名@主机地址::共享模块名
rsync -avz backuper@192.168.10.22::wwwroot /opt/

格式二:
rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@192.168.10.22/wwwroot /opt/


方法1 

方法2

3.2 做免密交互

每次客户端请求同步时都需要  输密码,很烦。这边做免密交互

第一步创建一个密码文件 并加读写权限

第二步   在请求同步的时候,指定密码从这个文件里,就可以了

3.3 请求同步中  delete 的用法

首先可以看到99 服务端中   有两个文件

77 客户端   去同步   当然也会变成两个文件

当我们把 99 服务端的1.txt 删除    正常同步时,77  客户端没变

需要加 --delete   即删除目标位置有而原始位置没有的文件

可以看到,他会把除了2.txt   之外的文件全部删了  (因为99服务端的  /var/www/html/ 里面只有2.txt)

五     rsync 常见报错

我们在使用rsync  时候   经常会出现下面的报错

@ERROR: auth failed on module wwwroot
rsync error: error starting client-server protocol (code 5) at main.c(1516) [Receiver=3.0.9]

解决此问题的步骤可能包括:

  • 检查认证凭据: 确认使用的用户名、密码、密钥等认证信息是否正确,是否适用于目标系统上的“wwwroot”模块。必要时,更新或重新配置凭据。

  • 确认权限设置: 确保执行 rsync 操作的用户具有足够的权限访问和操作“wwwroot”模块。可能需要与系统管理员沟通,核实或调整权限设置。

  • 检查防火墙和网络设置: 确保网络连接畅通,且防火墙规则没有阻止 rsync 协议的正常通信。如有必要,临时关闭防火墙或添加相应的允许规则进行测试。

  • 查看 rsync 服务器配置: 如果您正在连接到一个专门的 rsync 服务器,检查其配置文件(如 /etc/rsyncd.conf),确保“wwwroot”模块的相关配置(如 auth userssecrets filehosts allow 等)无误。

  • 升级或降级 rsync 版本: 虽然版本 3.0.9 的问题不大可能,但如果怀疑是 rsync 版本兼容性问题,可以尝试升级或降级到其他稳定版本进行测试。

六   总结

1,请求同步语法

格式一:
用户名@主机地址::共享模块名
rsync -avz backuper@192.168.10.22::wwwroot /opt/

格式二:
rsync://用户名@主机地址/共享模块名
rsync -avz rsync://backuper@192.168.10.22/wwwroot /opt/
 

2,生产环境rsync  使用ssh 账户

例如,假设您有一个名为 user1 的 ssh 账户,要从远程主机 remote.example.com 上的 /home/user1/data 目录同步到本地的 /local-backup 目录,可以使用以下命令:

1rsync -avz user1@remote.example.com:/home/user1/data /local-backup

这里的 -avz 是 rsync 的常用选项,分别代表:

  • -a:归档模式,保留文件属性(如权限、时间戳等)并递归同步目录。
  • -v:详细输出,显示同步过程中的详细信息。
  • -z:压缩传输,启用数据压缩以减少网络传输量。

在执行上述命令时,rsync 会利用 ssh 进行身份验证和数据传输。这意味着:

  • 身份验证rsync 会使用您本地机器上与 user1 对应的 ssh 公钥私钥对(如果已配置无密码登录)或提示您输入 user1 的密码来完成身份验证。
  • 数据传输:一旦身份验证通过,rsync 会在 ssh 加密通道上进行数据同步,确保传输过程中数据的保密性。

综上所述,rsync 完全可以直接使用 ssh 账户来进行文件同步操作,只需在命令中正确指定 ssh 用户名、远程主机名和相应的路径即可。如果您已经设置了 ssh 密钥对以实现无密码登录,rsync 过程将更加便捷且无需人工干预。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799346.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【4036】基于小程序+ssm实现的软件学院会议室管理系统

作者主页:Java码库 主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。 收藏点赞不迷路 关注作者有好处 文末获取源码 技术选型 【后端】:Java 【框架】:ssm 【…

Vue中的键盘事件

目 录 1. 概述 2. JavaScript 键盘事件 2.1 键盘事件类型 2.1.1 keydown 事件2.1.2 keypress 事件2.1.3 keyup 事件2.1.4 input 事件 2.2 键盘事件的响应顺序 3. Vue 键盘事件监听与处理 3.1 获取按键的 键码(keyCode)3.2 监听按键事件 4. Vue 按键…

java理论小作业(2)--类

第一题 1.题目: 2.解析: 首先,我们来分析Hello1类的结构和给定代码的执行流程: Hello1类中有两个成员变量,一个静态的a和一个非静态的b。静态变量a属于类本身,而非静态变量b属于类的每一个实例&#xff…

开启Java之旅——用Java实现简易的图书管理系统(24.4.7)

图书管理系统 一、设计思路 1、首先需要区分两类人,图书管理员和借书用户,不同的用户要展现不同的界面,利用继承和多态可以将其实现。 2、要将不同的操作封装起来,单独设计成为一个类,为了规范实现,需要…

LeetCode-33. 搜索旋转排序数组【数组 二分查找】

LeetCode-33. 搜索旋转排序数组【数组 二分查找】 题目描述:解题思路一:二分查找。1.找哨兵节点(nums[0]或nums[-1])可以确定nums[mid]位于前一段或后一段有序数组中。2. 就是边界left和right的变换,具体看代码。解题思…

基于SpringBoot的“民宿管理平台系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“民宿管理平台系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SpringBoot 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 用户首页界面图 民宿信息管理界面图 房间预订…

IFC文件分析工具Top 5

分析行业基础类 (IFC) 文件是确保建筑信息模型 (BIM) 数据准确性和一致性的关键步骤。 在验证这些文件期间需要考虑各个方面,以避免错误并确保项目的最佳运行。 在本文中,我们将介绍验证 IFC 文件的五种有效方法,帮助你对 IFC 文件的质量充…

python开发poc2,爆破脚本

#本课知识点和目的: ---协议模块使用,Request 爬虫技术,简易多线程技术,编码技术,Bypass 后门技术 下载ftp服务器模拟器 https://lcba.lanzouy.com/iAMePxl378h 随便创建一个账户,然后登录进去把ip改成…

AI大模型下的策略模式与模板方法模式对比解析

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL应用》 💪🏻 制定明确可量化的目标,坚持默默的做事。 🚀 转载自热榜文章:设计模式深度解析:AI大模型下…

3D目标检测跟踪 | 基于kitti+waymo数据集的自动驾驶场景的3D目标检测+跟踪渲染可视化

项目应用场景 面向自动驾驶场景的 3D 目标检测目标跟踪,基于kittiwaymo数据集的自动驾驶场景的3D目标检测跟踪渲染可视化查看。 项目效果 项目细节 > 具体参见项目 README.md (1) Kitti detection 数据集结构 # For Kitti Detection Dataset └── k…

4.7总结(内部类,JDBC API || 离散化,树状数组)

JAVA学习小结 一.内部类 基础概念,用途和访问特点 什么是内部类:写在一个类中的另一个类称之为内部类; 内部类的用途:用于封装那些单独存在时没有意义,且是外部类的一部分的类(汽车发动机,人…

【MySQL探索之旅】数据库设计以及聚合查询

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

Django之静态文件及模板语法(上)

Python学习之路系列文章目录 python面向对象之警察与匪徒火拼场景模拟python面向对像之第二次笔记Django环境搭建及测试第1个Django应用及Django的请求处理Django之静态文件及模板语法(上) 静态文件及模板语法 Python学习之路系列文章目录一、静态文件1.…

SQLite 4.9的虚拟表机制(十四)

返回:SQLite—系列文章目录 上一篇:SQLite 4.9的 OS 接口或“VFS”(十三) 下一篇:SQLite—系列文章目录 1. 引言 虚拟表是向打开的 SQLite 数据库连接注册的对象。从SQL语句的角度来看, 虚拟表对象与任何其他…

软考高级:计算机网络概述

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

数据库相关知识总结

一、数据库三级模式 三个抽象层次: 1. 视图层:最高层次的抽象,描述整个数据库的某个部分的数据 2. 逻辑层:描述数据库中存储的数据以及这些数据存在的关联 3. 物理层:最低层次的抽象,描述数据在存储器中时如…

五一假期来临,各地景区云旅游、慢直播方案设计与平台搭建

一、行业背景 经文化和旅游部数据中心测算,今年清明节假期3天全国国内旅游出游1.19亿人次,按可比口径较2019年同期增长11.5%;国内游客出游花费539.5亿元,较2019年同期增长12.7%。踏青赏花和户外徒步成为假期的热门出游主题。随着…

Taro打包生成不同目录

使用taro init创建taro项目时,taro默认打包目录是: /config/index.js outputRoot:dist默认的目录,编译不同平台代码时就会覆盖掉,为了达到多端同步调试的目的,这时需要修改默认生成目录了,通过查看官方文…

【LeetCode】排序数组——不一样的方式实现快排

目录 题目链接 颜色分类 算法原理 代码实现 排序数组 算法原理 代码实现 最小的k个数 算法原理 代码实现 题目链接 LeetCode链接:75. 颜色分类 - 力扣(LeetCode) LeetCode链接:912. 排序数组 - 力扣(L…

docker 部署 Epusdt - 独角数卡 dujiaoka 的 usdt 支付插件

部署 部署说明 部署之前必须注意的几点事项,该教程不一定适合所有用户: 本教程主要是使用 docker 部署,宝塔用户或宿主机直接安装的用户请直接参考官网教程.本教程是独立部署 epusdt,使用独立的mysql和redis,与dujiaoka项目分开. 在研究的过程中发现 epusdt 也需要用到 mys…