跳转至

rsync 简述

备份

在详细说明 Rsync 之前,有必要先了解备份的概念、分类以及实现方法。

备份是指将文件系统或数据库系统中的数据复制到另一个独立存储介质上的操作。通过此操作,可以防止因误删、硬件故障或病毒攻击等意外情况导致原始数据丢失或损坏。随后,您可通过备份副本快速恢复有效数据,确保业务的正常运行。

常见备份分类包括:

  • 按备份对象划分

    • 系统备份 - 您可以提前对操作系统进行全量备份。当系统文件损坏导致系统无法启动时,可以通过备份快速恢复所需的环境。
    • 数据备份 - 这是用于文件、数据库和应用程序等业务数据的备份,可在数据丢失后实现精确恢复。该备份还包括选择性备份,即仅备份部分业务数据。
  • 按备份内容划分

    • 全量备份 - 在指定时间点创建所有数据的完整副本。此操作会占用大量存储空间用于存放备份文件,且执行时间相对较长,但能以最高效的方式完成数据恢复过程。
    • 增量备份 - 仅备份上一次全量备份或增量备份之后新增和修改的部分。可实现快速的备份速度,占用极少的存储空间,但在恢复过程中需要叠加多个备份副本。
    • 差异备份 - 在完成一次全量备份后,仅备份自该全量备份以来新增或修改的数据。恢复时,只需使用全量备份和最新的差异备份即可。与增量备份相比,其恢复步骤更少,但随着时间的推移,备份体积会比增量备份更大。
  • 按运行状态划分

    • 冷备份 - 在操作系统或应用程序处于关闭或维护状态时进行的备份。此时的备份数据与该时间段内系统中的数据完全一致。
    • 热备份 - 在操作系统或应用程序正常运行时进行的备份。由于操作系统或应用程序正在运行,数据会不断更新,因此备份数据与系统实际数据之间会存在一定程度的滞后。

实现备份的主要方法包括:

  • 本地介质备份 - 定期将数据备份到外部硬盘、磁带库和本地独立磁盘等存储设备上
  • 远程异地备份 - 通过网络将数据传输至另一个远程备份中心,以防止因火灾、自然灾害、盗窃及其他事件导致的数据丢失和服务中断。

Rsync 的出现

在 GNU/Linux 中,常见的本地介质备份工具包括:

  • tar
  • dd
  • dump
  • cp
  • ...

在备份现有本地数据时,您可以将备份文件存储在当前存储介质上,也可以存储在额外的独立存储介质上。然而,无论是当前使用的存储介质还是独立存储介质,都可能发生损坏。为防范这一风险,应采用一种额外的备份方法,即远程异地备份。

另一方面,生产环境中的数据量非常大。如果使用传统且常见的工具,例如:

  • tar 或 cp - 它会耗费大量时间,并占用系统性能
  • scp 或 sftp - 通过网络传输备份数据会消耗大量带宽。
  • 其他 - 常与 crontab 一起使用,但 crontab 只能按固定周期盲目执行,无法感知数据变化,因此难以实现高效的增量备份

所以在生产环境下需要有一种数据备份满足以下的要求:

  1. 通过网络传输的备份
  2. 实时的数据文件同步
  3. 占用较少系统资源且效率更高

Rsync 是满足上述条件的理想工具。它采用 GNU 开源许可证协议,是一款快速的增量备份工具。最新版本为 3.5.1(2026-09-21)。您可以访问 官方网站 获取更多信息。

在平台支持上,绝大多数的类 Unix 都得到了支持,不管是 GNU/Linux 还是 BSD。另外 Windows 平台下也有相关的 Rsync,如 cwRsync。

Rsync 的原始版本由澳大利亚程序员 Andrew Tridgell(没错,就是开发了 Samba 的那位程序员)开发并维护,2004 年至 2024 年间由 Wayne Davison 负责维护。您可以在 GitHub 项目页面 上找到更多相关信息。

安德鲁-特里杰尔 韦恩-戴维森

说明

Rsync 本身仅是一个增量备份工具,并不具备实时数据同步功能(需要借助其他程序来实现)。此外,同步是单向的。如果要实现双向同步,则需要配合其他工具使用。

基本原理和特点

Rsync 支持高效的单向数据同步,主要通过 rolling checksum 或 delta encoding 算法实现。有关更多信息,可参阅 Rsync 工作原理 和 Rsync 算法。

Rsync 的主要特点包括:

  • 可以递归更新整个目录
  • 支持增量传输以节省带宽
  • 传输过程中的可压缩数据
  • 能够断点续传
  • 可选择性地保留文件同步属性
  • 支持两种数据传输协议,一种是 SSH 协议,另一种是 RSYNC 协议

安装 Rsync

无论您使用的是 RL 8.x、RL 9.x 还是 RL 10.x,只需输入以下命令即可完成安装:

[root@Rocky ~]# dnf -y install rsync

Author: tianci li

Contributors: Steven Spencer, Ganna Zhyrnova