备份简介¶
什么是备份?
备份是指对文件系统或数据库中的数据进行复制。在发生错误或灾难的情况下,可以及时恢复系统的有效数据,并恢复正常运行。
备份方法有哪些?
- 完全备份:是指一次性复制硬盘或数据库中所有文件、文件夹或数据。(优点:最好,可以更快地恢复数据。缺点:占用更大的硬盘空间。)
- 增量备份:是指备份上次完全备份或增量备份后更新的数据。过程是这样的,比如第一天做完全备份;第二天备份新添加的数据,而不是做完全备份;第三天在第二天的基础上备份新添加的数据,相对于下一天,以此类推。
- 差异备份:是指备份完全备份后更改的文件。例如,第一天做完全备份;第二天备份新数据;第三天备份从第二天到第三天的新数据;第四天备份从第二天到第四天所有新数据,以此类推。
- 选择性备份:是指备份系统的一部分。
- 冷备份:是指系统处于关机或维护状态时的备份。备份的数据与此时系统中的数据完全一致。
- 热备份:是指系统正常运行时的备份。由于系统中的数据随时更新,备份的数据相对于系统的真实数据有一定的滞后性。
- 远程备份:是指将数据备份到另一个地理位置,以避免火灾、自然灾害、盗窃等造成的数据丢失和服务中断。
rsync 简述¶
在服务器上,我将第一个分区备份到第二个分区,俗称“本地备份”。具体的备份工具是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
是由澳大利亚程序员维护的Andrew Tridgell(如下图 1 所示),现在由Wayne Davison(如下图 2 所示)维护。 ) 为了维护,您可以访问github 项目地址获取所需的信息。
注意
rsync 本身只是一个增量备份工具,它没有实时数据同步的功能(需要其他程序补充)。此外,同步是单向的。如果你想实现双向同步,你需要与其他工具配合。
基本原理和特性¶
rsync
如何实现高效的单向数据同步备份?
rsync
的核心是它的 **校验和算法**。有关详细信息,您可以访问 Rsync 工作原理 和 Rsync 算法。本节超出了作者的能力范围,不会过多介绍。
rsync
的特点是
- 可以递归地更新整个目录;
- 可以选择性地保留文件同步属性,如硬链接、软链接、所有者、组、对应权限、修改时间等,并可以保留部分属性;
- 支持两种传输协议,一个是 ssh 协议,另一个是 rsync 协议
作者:tianci li
贡献者:Steven Spencer、Ganna Zhyrnova