备份简述¶
什么是备份?
备份指的是将文件系统或者数据库中的数据进行复制,一旦发生错误或者灾难时,能及时方便地恢复系统的有效数据且正常运作。 一旦发生错误或者灾难时,能及时方便地恢复系统的有效数据且正常运作。
备份的方式有哪些?
- 完全备份(Full backup):指把硬盘或数据库内的所有文件、文件夹或数据作一次性的复制。 (优点:最好,能更快的恢复数据。 缺点:占用较大的硬盘空间。)
- 增量备份(incremental backup):指对上一次全部备份或增量备份后更新的数据进行备份。 过程是这样的,比如第一天进行一次完全备份;第二天进行一次新增数据的备份,相对于全部备份来说;第三天在第二天的基础上再进行一次新增数据的备份,相对于第二天来说。
- 差异备份(Differential backup) :指完整备份后变更的文件的备份。 比如第一天完全备份;第二天备份新增数据;第三天备份第二天到第三天的新增数据;第四天备份第二天到第四天所有的新增数据。
- 选择性备份(Selective backup):指对系统的一部分进行备份。
- 冷备份(Cold backup):指系统处于停机或维护状态下的备份。 备份的数据与系统中此时段的数据完全一致。
- 热备份(Hot backup): 指系统处于正常运转状态下的备份。 由于系统中的数据随时在更新,备份的数据相对于系统的真实数据有一定的滞后。
- 异地备份(Remote backup):指在另外一个地理位置备份数据,避免因为火灾、自然灾害、盗窃等造成数据丢失与服务中断。
rsync简述¶
在一台服务器上我将第一个分区备份到第二个分区,也就是俗称的 " 本地备份(Local backup)",备份的具体工具有tar
、dd
、dump
、cp
等都能实现。 备份的具体工具有 tar
、 dd
、 dump
、 cp
等都能实现。 虽然数据备份在这台服务器上,但如果硬件无法正常启动,数据将不会被检索。 为了解决本地备份这个问题,我们引入了另一种备份——“远程备份”。
有人会说,我在第一台服务器上使用 tar
或者 cp
命令,然后通过 scp
或者 sftp
传到第二台服务器不就可以了吗?
在生产环境下,数据量是比较大的。 首先, tar
或者 cp
会消耗大量的时间且占用系统的性能。 通过scp
或者sftp
传输还会占用大量的网络带宽,这在实际的生产环境下是不被允许的。 其次,这些命令或者说工具是需要管理员手工输入的,需要搭配计划任务crontab一起。 但crontab设定的时间不好掌握,时间太短或者太长对于备份数据来说都是不合适的。
所以在生产环境下需要有一种数据备份,需满足以下的需求:
- 通过网络传输的备份
- 实时的数据文件同步
- 对系统资源的占用较小,且效率较高
rsync
似乎满足了上述需求。 它使用 GNU 开源许可协议, 是一个快速增量备份的工具, 最新版本为3.2.3(2020-08-06)。 您可以访问 官方网站 获取更多信息。
在平台支持上,支持绝大多数的类Unix,不管是GNU/Linux还是BSD等都支持。 另外Windows平台下也有相关的rsync,比如cwRsync。
最初的 rsync
由澳大利亚程序员安德鲁-特里杰尔(下图1所示)进行维护,现在已由韦恩-戴维森(下图2所示)进行维护,可以到 github项目地址 获取您想要的信息。
笔记
Rsync本身只是一个增量备份工具,不具备实时数据同步功能(需要其他程序做补充)。 此外,同步是单向的。 如果您要实现双向同步,需要配合其他工具。**
基本原理和特点¶
rsync是如何实现高效的单向数据同步备份的?
Rsync 的核心就是它的 Checksum算法 , 有关更多信息,您可以转到 rsync的工作原理 和 rsync算法。 这一部分超出了作者的能力范围,不作过多的介绍。
rsync
的特点有:
- 能以递归的形式更新整个目录;
- 能有选择的保留文件同步属性,比如硬链接、软链接、所有者、所属组、对应权限、修改时间等,可以保留其中的一部分属性;
- 支持两种协议进行传输,一个是ssh协议,一个是rsync协议
Author: tianci li
Contributors: Steven Spencer, Ganna Zhyrnova