9.10. 备份

制作备份是管理员的主要责任之一,但它是个相对复杂的课题,并包含一些很难掌握的强大工具。

很多程序系供备份之用,如 amandabaculaBackupPC。主从架构程序有很多选项,其配置相当困难。部分有亲和力强的网页接口减轻其负担。但 Debian 还有十多种备份软件可用,以 apt-cache search backup 命令可搜索它们。

本章节并没有详细介绍这些工具,而是介绍 Falcot Corp (本书中虚构的公司)管理员们确定备份策略时的思路。

在 Falcot Corp公司,备份有两个目的:恢复被误删的文件,迅速恢复硬盘损坏的电脑。

9.10.1. 使用 rsync备份

以磁带备份太慢且太贵,现在采用备份在专属服务器的硬盘策略,以 RAID (见 第 12.1.1 节 “软 RAID”) 软件保护数据在硬盘毁损时不致遗失。桌面电脑没有个别备份的策略,用户应在部分的文件服务器备份其数据。rsync 命令 (取自同名的软件包) 用于逐日备份这些服务器。

回到基础 硬链接,文件的第二个名字

相对于符号链接,硬链接不能自外于被链接文件。添加的硬链接等于给文件另个名称。删除硬链接等于删除该文件的另个名称。只要还有另个名称指定给文件,则数据仍在文件系统内。不同于复制,硬链接并未在硬盘里复制另个空间。

硬链接使用 ln *target* *link* 命令创建。 然后link 文件是target 文件另外的新名字。硬链接只能在相同的文件系统上创建,而符号链接不受此限制。

有限的硬盘空间限制了每天完全备份数据。由此,rsync 命令对之前备份的内容使用硬链接,这样可以避免使用过多的硬盘空间。 然后rsync 进程只覆盖上次备份后修改过的文件。通过这种机制,大量的备份只占用小的磁盘空间。所有的备份会立即生效并且可以读写(例如,在共享网络上的不同目录),可以迅速比较两个不同日期的文件。

这种备份机制可以通过 dirvish 程序执行。使用备份存储空间(“空”的),放置有时间戳的备份文件集(这些文件集在dirvish 文档中被成为“vaults”)。

主要配置在 /etc/dirvish/master.conf 文件中。它定义了备份存储空间的位置,要管理的“vaults”,和备份超期的默认值。配置的其他部分在 *bank*/*vault*/dirvish/default.conf 文件中,包含对应文件集的特殊配置。

例 9.3. /etc/dirvish/master.conf 文件

  1. bank:
  2. /backup
  3. exclude:
  4. lost+found/
  5. core
  6. *~
  7. Runall:
  8. root 22:00
  9. expire-default: +15 days
  10. expire-rule:
  11. # MIN HR DOM MON DOW STRFTIME_FMT
  12. * * * * 1 +3 months
  13. * * 1-7 * 1 +1 year
  14. * * 1-7 1,4,7,10 1

bank 设置保存备份的文件夹。exclude 设置不列入备份的文件 (或文件类型)。Runall 是做为备份时间戳记的文件清单,若未在指定的时间备份时,还可以其指定的时间复制文件。可以指定在实际运行时间前 (也就是,缺省在 10:04 pm,根据 /etc/cron.d/dirvish)。最后,expire-defaultexpire-rule 设置备份失效政策。以上的范例永远在每季的第一个星期日运行备份,并在一年后的每月第一个星期日删除它,以及在三个月后的另个星期日删除它。其他的逐日备份则保留 15 天。运行的顺序有关系,Dirvish 使用最后符合的规则,或 expire-default 若无其他的 expire-rule 符合。

实践 使用SSH远程备份

失效规则未被 dirvish-expire 使用。实际上,在添加备份副本时,设置该复本失效的日期。dirvish-expire 细读保存的复本并删除也达失效日期的文件。

例 9.4. /backup/root/dirvish/default.conf 文件

  1. client: rivendell.falcot.com
  2. tree: /
  3. xdev: 1
  4. index: gzip
  5. image-default: %Y%m%d
  6. exclude:
  7. /var/cache/apt/archives/*.deb
  8. /var/cache/man/**
  9. /tmp/**
  10. /var/tmp/**
  11. *.bak

上面的例子中指明了要备份的文件集:这些文件在机器 rivendell.falcot.com 上(对本地数据备份,只需指明本地机器 hostname),主要是在根目录下(tree: /),除了在 exclude中列出的文件。备份仅限于一个文件系统中的内容(xdev: 1)。不包含其他挂载点的文件。产生保存文件的索引(index: gzip),镜像根据当前日期进行命名(image-default: %Y%m%d)。

有许多可用选项,都记录在 dirvish.conf(5) 手册中。一旦这些配置文件设定好后,必须要使用dirvish --vault *vault* --init 命令来初始化每个文件集。此后每天在删除过期备份之后,就会自动唤起 dirvish-runall 进行备份。

实践 使用SSH远程备份

把数据保存在远程机器时,需用 ssh 命令链接它,并启用 rsync 做为服务器。需以超级使者的权限才能自动链接。以 SSH 认证码精确链接 (见 第 9.2.1.1 节 “基于密钥的认证”)。

9.10.2. 不使用备份恢复系统

桌面电脑不需要备份,以 Simple-CDD (见 第 12.3.3 节 “Simple-CDD: The All-In-One Solution”) 刻录的 DVD-ROM 就能简单地重新安装。回到原始的状态,旧有的设置全部消失。通常链接至中央的 LDAP 文件夹,大部分桌面的设置存在 dconf (见 第 13.3.1 节 “GNOME” 的详细数据)。

Falcot Corp 的管理者知道该公司备份政策的限制。未以防火墙保护备份服务器,而是把它放在另个房间,以免在灾难来临时与主服务器同归一烬。而且,每周以 DVD-ROM 做增量备份 — 只备份修改过的文件。

进阶 备份SQL 和LDAP 服务

很多服务 (诸如 SQL 或 LDAP 数据库) 不能以复制文件的方式备份其系统 (unless they are properly interrupted during creation of the backups, which is frequently problematic, since they are intended to be available at all times)。因此,必须以 “导出” 机制生成 “倒出数据” 才能安全地备份。量很大,妥善地压缩。为了减少保存空间,每周只保存完成的文本档,以及每天的 diff,以 diff *file_from_yesterday* *file_from_today* 命令创建。xdelta 程序从二进位倒出增量的不同数据。

文化 TAR,磁带备份标准

历史上,在Unix 上制作备份最简单的方法是将一个 TAR 档案存到磁带上。 tar 甚至得名于“Tape ARchive”。