目录

  • rsync 传输备份工作原理详解
    • 一、核心算法:差异传输
    • 二、传输流程
    • 三、关键技术
    • 四、与cp/scp复制的本质区别
  • rsync的使用
    • 基本语法
      • 常用选项
      • 常用组合案例
        • 1. **本地目录同步**
        • 2. **远程同步(SSH协议)**
        • 3. **删除目标端多余文件**
        • 4. **排除特定文件**
        • 5. **限速传输(避免占用带宽)**
        • 6. **仅同步修改时间不同的文件**
      • 关键注意事项
    • rsync 同步方式
      • 1. 完整备份 (Full Backup)
      • 2. 差量备份 (Differential Backup)
      • 3. 增量备份 (Incremental Backup)
      • 常见问题
    • rsync实现远程增量备份的方案
  • rsync + inotify 实时同步案例
      • 1. 安装 inotify-tools
      • 2. 实时同步脚本 (rsync_inotify.sh)
      • 3. 启动脚本(后台运行)
      • 4. 系统服务配置(可选)

rsync 传输备份工作原理详解

rsync是一个快速和非常方便的文件复制工具。 它能本地复制,远程复制,或者远程守护进程方式复制 ,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。

rsync监听端口:873
其核心工作原理可以分为以下几个关键方面:

一、核心算法:差异传输

  1. 分块校验机制

    • rsync 将文件分割成固定大小的块(默认约700字节)
    • 对每个块计算两个校验值:
      • 弱校验(rolling checksum):32位的快速校验
      • 强校验(MD5):128位的精确校验
  2. 差异检测过程

    • 发送方计算源文件的校验值
    • 接收方计算目标文件的校验值
    • 双方比较校验值,仅传输不匹配的块

二、传输流程

扫描:扫描需要传输的文件列表。
检查:对比源和目标文件的时间戳和大小。
分块:将文件分割成固定大小的数据块。
校验:通过滚动校验算法计算数据块的特征值。
传输:仅传输变化的数据块。
重组:在目标端重组完整文件。

三、关键技术

  1. 双通道设计

    • 控制通道:传输命令和元数据
    • 数据通道:实际文件数据传输
  2. 滚动校验算法

    /* 简化版滚动校验计算 */
    uint16_t weak_checksum(char *buf, int len) {uint16_t s1 = 0, s2 = 0;for (int i = 0; i < len; i++) {s1 += buf[i];s2 += s1;}return (s2 << 16) | s1;
    }
    

    这种算法可以高效计算滑动窗口的校验值

  3. 三次文件处理

    • 文件列表生成
    • 差异比较
    • 文件更新

四、与cp/scp复制的本质区别

操作cp/scprsync
文件比较校验和比较
传输单位整个文件文件块
网络使用优化
CPU使用较高
适合场景简单复制重复同步

rsync的使用

基本语法

rsync [选项] 源文件 目标文件

常用选项

选项作用解释
-a (–archive)归档模式,保留所有文件属性(权限、时间、所有者等),等同于 -rlptgoD
-v (–verbose)显示详细传输过程
-z (–compress)压缩传输,节省带宽(适合远程同步)
-h (–human-readable)以易读格式(KB/MB/GB)显示文件大小
-n (–dry-run)模拟运行,只显示会做什么但不实际执行
-e指定远程 shell 命令 (如 -e "ssh -p 2222",默认为ssh)
-P组合选项,等同于 --partial --progress(显示进度 + 支持断点续传)
--exclude排除特定文件或目录
--include包含特定文件或目录
--delete删除目标目录中存在但源目录中不存在的文件(保持严格同步)

常用组合案例

1. 本地目录同步
rsync -av /source/ /destination/
  • 作用:将 /source/ 下的内容同步到 /destination/(保留所有属性)
  • 注意:源路径末尾的 / 表示同步目录内容(不含目录本身),不加 / 会同步目录本身。
2. 远程同步(SSH协议)
rsync -avzP -e "ssh -p 22" /local/path/ user@remote:/remote/path/
  • -e "ssh -p 22":指定 SSH 端口(默认 22 可省略)
  • -z:压缩传输加速
3. 删除目标端多余文件
rsync -av --delete /source/ /destination/
  • 危险操作:确保目标路径正确,否则可能误删数据!
4. 排除特定文件
rsync -av --exclude='*.tmp' --exclude='logs/' /source/ /destination/
  • --exclude:排除匹配的文件或目录(支持通配符)
  • *:匹配零个或多个字符,例如,*.txt 匹配所有以 .txt 结尾的文件。
  • ?:匹配一个字符,例如,file?.txt 匹配 file1.txt、file2.txt 等。
  • [abc]:匹配方括号内的任意字符,例如,file[1-3].txt 匹配 file1.txt、file2.txt、file3.txt
5. 限速传输(避免占用带宽)
rsync -avz --bwlimit=

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

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

相关文章

【MySQL进阶】错误日志,二进制日志,mysql系统库

目录 一.错误日志 1.1 配置错误日志 1.1.1 Windows的默认错误日志路径 1.1.2 Unix和Linux系统的默认错误日志路径 1.2 错误日志中事件的字段 1.2.1 核心错误事件字段 1.2.2.MySQL 错误消息的两种不同输出渠道 1.2.3 可选错误事件字段 1.3. 刷新错误日志文件和重命名 二…

day45-nginx复杂跳转与https

1. ✅nginx复杂跳转 客户端ip不是内网(172.16/192.168)ip时&#xff0c;维护文件存在时&#xff0c;返回503或者错误页面 1.1. &#x1f4dd;修改配置文件 server {listen 80;server_name re.linux.cn; root /app/code/re/;set $flag 0;if ( $remote_addr !~* "^172…

基于pcl点云库实现激光雷达数据采集

基于pcl点云库实现倍加福R2000激光雷达数据采集 一、项目介绍二、开发详情三、显示效果展示四、说明 一、项目介绍 最近用pcl库实现了倍加福R2000激光雷达的数据采集&#xff0c;并实时在viewer上实时更新显示。软件的开发是基于vs2019qt插件pcl库实现&#xff0c;可以完成如下…

微信小程序61~70

1.组件wxml的slot-插槽 在使用基础组件时&#xff0c;可以在组件中间写子节点&#xff0c;从而将子节点内容展示到页面中&#xff0c;自定义组件也可以接收子节点但是要在组件模板中定义节点&#xff0c;承载组件中间的子节点需要使用多个插槽时&#xff0c;要在组件.js中声明…

03_性能优化:让软件呼吸更顺畅

引言 在用户对软件响应速度近乎苛刻的今天&#xff0c;性能已成为产品竞争力的核心指标。据Google研究&#xff0c;页面加载时间每增加1秒&#xff0c;转化率就会下降20%。本文将从前端、后端、移动端三个维度&#xff0c;揭示性能优化的核心策略与实战技巧&#xff0c;帮助你打…

LangChain4j 框架模仿豆包实现智能对话系统:架构与功能详解

系统整体架构设计基于 LangChain4j 框架构建的智能对话系统采用 "前后端分离 大模型中枢" 的三层架构设计&#xff0c;实现了与豆包类似的智能交互体验。系统架构图如下所示&#xff1a;┌────────────────────────────────────…

基于uni-app的书法学习管理小程序的设计与实现

一、设计的目的 书法是中华民族传统文化的瑰宝&#xff0c;更是人类文明的宝贵财富&#xff0c;具有深远的意义和实价值。在当今数字化时代&#xff0c;随着信息技术的飞速发展&#xff0c;传统书法学习模式面临着诸多挑战和需要解决的问题。为推动书法学习的现代化转型&#…

NumPy 函数库在数学建模中的基本使用方法

一、引言 在数学建模的世界里,我们常常需要处理大量的数据和进行复杂的数值计算。Python 中的 NumPy 库就像是一位得力的助手,它为我们提供了强大的多维数组对象和丰富的数学函数,让我们能够高效地完成各种数值计算任务。接下来,我们将深入探讨 NumPy 在数学建模中的基本使…

模块三:现代C++工程实践(4篇)第一篇《C++模块化开发:从Header-only到CMake模块化》

引言&#xff1a;现代C工程化的核心挑战&#xff08;终极扩展版&#xff09; 在云计算与物联网时代&#xff0c;C项目规模呈指数级增长。传统Header-only开发模式暴露出编译效率低下、依赖管理混乱、版本冲突频发等致命问题。本文通过CMake 3.22Conan 2.0工具链的深度集成&…

uniapp启动图被拉伸问题

记录下&#xff1a; 安卓手机有不同的规格&#xff0c;很难所有规格都去适配。如果不适配所有机型&#xff0c;那么就会导致部分机型的启动图被拉伸。 安卓提供了.9.png图片格式&#xff0c;允许标注部分拉伸&#xff0c;这样启动图中间的logo就不会被拉伸。 下面2张图是没有…

stm32的三种开发方式

以下是针对STM32F103RC实现LED闪烁&#xff08;PC13引脚&#xff09;的三种开发方式示例代码&#xff0c;每种方式均保持相同的核心逻辑&#xff1a; 1. 寄存器开发方式&#xff08;直接操作寄存器&#xff09; #include "stm32f10x.h"int main(void) {// 1. 开启G…

SpringBoot问卷调查系统设计与实现

概述 基于SpringBoot开发的问卷调查系统&#xff0c;该系统集成了问卷管理、题目管理等多种功能模块。 主要内容 核心功能模块&#xff1a; ​​个人信息管理​​&#xff1a; 修改密码个人信息修改 ​​问卷管理​​&#xff1a; 问卷新增问卷修改问卷删除 ​​题目管理​…

Linux进程管理:从基础到实战

在 Linux 系统编程中&#xff0c;进程&#xff08;Process&#xff09; 是操作系统进行资源分配和调度的基本单位。理解进程的概念是掌握系统编程、多任务处理、并发编程的基础。 目录 一、什么是进程&#xff1f; 定义&#xff1a; 二、进程的生命周期 示例&#xff1a;查…

工业物联网中的 Modbus:传感器与网关通信实战(二)

四、实战案例解析 4.1 项目背景与目标 某智能工厂致力于提升生产过程的自动化和智能化水平&#xff0c;对生产线上的各种设备进行实时监控和数据分析。在该工厂的一个生产车间中&#xff0c;存在着大量的传感器&#xff0c;用于监测设备的运行状态、环境参数等信息。这些传感…

飞算 JavaAI 智控引擎:全链路开发自动化新图景

免责声明: 此文章的所有内容皆是本人实验测评&#xff0c;并非广告推广&#xff0c;并非抄袭。如有侵权&#xff0c;请联系&#xff0c;谢谢! 文章目录&#x1f4dd;前言一、飞算 Java AI 智能开发助手简介1.1何为飞算 Java AI智能助手&#xff1f;2.2 飞算Java AI 直击开发全场…

MYSQL数据库(九)MVCC-多版本并发控制

目录 一 前景导入 1 当前读 2 快照读 二 MVCC 1 隐藏字段 2 UndoLog 回滚日志 (1 UndoLog日志 (2 UndoLog版本链 3 Read View 面试八股 介绍一下MVCC 一 前景导入 1 当前读 可使当前事务读取的是最新版本的数据&#xff0c;读取时还要保证其他并发事务不能修改当中…

[Pytest] [Part 2]增加 log功能

开始实现需求之前先做个log类&#xff0c;可以给其他模块使用&#xff0c;也方便以后修改log类的功能和属性。 使用的是python中的logging包来进行简单的封装&#xff0c;具体代码如下 import logging import sysclass TefLogger:def __init__(self, logger_nameTEST_FRAMEWOR…

NeighborGeo:基于邻居的IP地理定位(三)

NeighborGeo:基于neighbors的IP地理定位 X. Wang, D. Zhao, X. Liu, Z. Zhang, T. Zhao, NeighborGeo: IP geolocation based on neighbors, Comput. Netw. 257 (2025) 110896, 3. NeighborGeo 本文提出NeighborGeo,利用图结构学习和有监督对比学习来建立可靠的地标-目标关…

python使用fastmcp包编写mcp服务端(mcp_server)和mcp客户端(mcp_client)

安装fastmcp pip install fastmcp编写mcp服务端代码 from fastmcp import FastMCP mcp FastMCP(weather)mcp.tool() def get_weather(city: str):获取对应城市的天气:param city: 目标城市:return: 该城市的天气return f"{city}天气晴朗&#xff0c;温度60度&#xff01…

(1)机器学习小白入门 YOLOv:从概念到实践

(1)机器学习小白入门YOLOv &#xff1a;从概念到实践 (2)机器学习小白入门 YOLOv&#xff1a;从模块优化到工程部署 (3)机器学习小白入门 YOLOv&#xff1a; 解锁图片分类新技能 目标检测一直是一个机器学习的一个重要的应用方向。而 YOLOv&#xff08;You Only Look Once&…