跳至内容

备份简述

什么是备份?

备份是指文件系统或数据库中的数据副本。在发生错误或灾难时,可以及时恢复系统有效数据,并进行正常运行。

有哪些备份方法?

  • 完全备份:指一次性地复制硬盘或数据库中的所有文件、文件夹或数据。(优点:最好,恢复数据速度快。缺点:占用较大的硬盘空间。)
  • 增量备份:指备份最后一次完全备份或增量备份之后更新的数据。其过程如下,例如第一天完全备份;第二天只备份新增加的数据,相对于第一天;第三天在第二天基础上备份新增加的数据,相对于第二天,依此类推。
  • 差异备份:指备份自完全备份以来发生变化的文件。例如,第一天完全备份;第二天备份新增加的数据;第三天备份从第二天到第三天的新增加的数据;第四天备份从第二天到第四天所有新增加的数据,依此类推。
  • 选择性备份:指备份系统的一部分。
  • 冷备份:指系统在关机或维护状态下进行的备份。备份的数据与此期间系统中的数据完全一致。
  • 热备份:指系统正常运行时进行的备份。由于系统中的数据随时都在更新,备份的数据相对于系统的真实数据存在一定的滞后。
  • 远程备份:指将数据备份到另一个地理位置,以避免火灾、自然灾害、盗窃等造成的数据丢失和业务中断。

rsync 简介

在一台服务器上,我将第一个分区备份到第二个分区,这通常被称为“本地备份”。具体的备份工具是 tardddumpcp 等都可以实现。虽然数据备份在本服务器上,但如果硬件发生故障导致无法正常启动,数据就无法找回。为了解决本地备份的这个问题,我们引入了另一种备份方式 --- “远程备份”。

有人会说,我不能在第一台服务器上直接使用 tarcp 命令,并通过 scpsftp 将其发送到第二台服务器吗?

在生产环境中,数据量相对较大。首先,tarcp 占用大量时间并占用系统性能。通过 scpsftp 进行传输也占用大量网络带宽,这在实际生产环境中是不允许的。其次,这些命令或工具需要管理员手动输入,并需要结合 crontab 定时任务。但是,crontab 设置的时间不容易把握,如果时间设置得太短或太长,都会导致数据备份不合适。

因此,在生产环境中需要一种数据备份方式,它需要满足以下要求:

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

rsync 的出现恰好满足了上述需求。它采用 GNU 开源协议,是一个快速的增量备份工具。最新版本是 3.2.3(2020-08-06),更多信息可以访问其 官方网站

在平台支持方面,它支持大多数类 Unix 系统,无论是 GNU/Linux 还是 BSD。此外,在 Windows 平台下也有相关的 rsync,例如 cwRsync。

最初的 rsync 由澳大利亚程序员Andrew Tridgell(如图 1 所示)维护,现在则由Wayne Davison(如图 2 所示)维护,你可以去 github 项目地址 获取你想要的信息。

 Andrew Tridgell  Wayne Davison

注意

rsync 本身只是一个增量备份工具,不具备实时数据同步的功能(需要其他程序配合)。另外,同步是单向的,如果需要实现双向同步,则需要配合其他工具。

基本原理与特性

rsync 是如何实现高效的单向数据同步备份的?

rsync 的核心在于它的 校验和算法。更多信息可以参考 How Rsync worksThe rsync algorithm。这部分超出了作者的能力范围,就不做过多的赘述了。

rsync 的特点是:

  • 可以递归地更新整个目录树;
  • 可以有选择地保留文件同步属性,例如硬链接、软链接、所有者、组、对应的权限、修改时间等,并且可以保留其中的某些属性;
  • 支持两种传输协议,一种是 ssh 协议,另一种是 rsync 协议。

作者:李天赐

贡献者:Steven Spencer, Ganna Zhyrnova