17.8. 基础备份知识

实施备份计划对于从磁盘故障、意外文件删除、随机文件损坏或完全销毁计算机(包括销毁现场备份)中恢复至关重要。

备份类型和计划会有所不同,具体取决于数据的重要性、文件还原所需的粒度以及可接受的停机时间。一些可能的备份技术包括:

通常,使用混合备份技术。例如,可以创建一个计划来自动执行每周一次的、在异地存储的完整系统备份,并为此备份补充每小时一次的 ZFS 快照。此外,在进行文件编辑或删除之前,可以手动备份各个目录或文件。

本节介绍一些可用于在 FreeBSD 系统上创建和管理备份的实用程序。

17.8.1. 文件系统备份

传统的UNIX®备份文件系统的程序是dump(8)。创建备份,以及 restore(8),恢复备份。这些实用程序在磁盘块级别工作,在文件系统创建的文件、链接和目录的抽象下面。与其他备份软件不同,dump只备份整个文件系统,而不能只备份一个文件系统的一部分或跨越多个文件系统的目录树。dump不是写入文件和目录,而是写入组成文件和目录的原始数据块。

注意:

如果在根目录上使用dump,它将不会备份/home 、/usr或许多其他目录,因为这些目录通常是其他文件系统的装载点或到这些文件系统的符号链接。

当用于还原数据时,默认情况下,restore会将临时文件存储在/tmp/中。使用具有小/tmp的恢复磁盘时,将TMPDIR设置为具有更多可用空间的目录,以便还原成功。

当使用dump时,请小心最早自AT&T UNIX®,circa 1975的版本6仍有一些问题存在,预设的参数会假设备份到一个9轨的磁带,这并非其他类型的媒体或现今可用的高密度磁带,必须另外在指令列修改这个预设值。

虽然可以使用rdump(8)rrestore(8)工具可以跨网络备份一个文件系统到另一个系统或备份到连接另一台电脑的磁带机,但这使用两个工具备份的安全性并不足够。

可改以在较安全的SSH联机上使用dumprestore。以下例子会建立一个完整、压缩的/usr备份并透过SSH联机传送备份档案到指定的主机。

例 17.1. 通过ssh使用dump
# /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
          targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz

这个例子会设定RSH,以便透过SSH联机写入备份到远端系统的磁带机:

例 17.2. 在ssh使用dump透过RSH设定
# env RSH=/usr/bin/ssh /sbin/dump -0uan -f targetuser@targetmachine.example.com:/dev/sa0 /usr

17.8.2. 备份目录

有很多备份软件可用于备份文件和目录。

要备份一个目录中的所有档案最好的选择是tar(1),这个工具最早可以追朔自AT&T UNIX®版本6时,因此预设会做一个递归备份到一个磁带机,可以使用参数来改指定备份档案的名称。

这个例子会建立目前目录的压缩备份并储存至/tmp/mybackup.tgz,在建立备份档案时,要确认备份档案不要储存到与目前备份目录相同的目录。

例 17.3. 使用tar备份当前目录
# tar czvf /tmp/mybackup.tgz . 

要还原整个备份,先cd进入要放置还原档的目录并指定备份的名称。注意,这个动作会复写任何在该还原目录中任何较新版的档案,当不确定时,可先还原到一个暂时的目录或指定备份档中的档案做还原。

例 17.4. 使用tar还原目前目录
# tar xzvf /tmp/mybackup.tgz

除此之外还有许多可用的参数在tar(1)中会有说明。本工具也支持使用排除模式(Exclude pattern)来指定那些档案应该在备份指定目录或自备份还原档案时排除。

要使用指定的档案与目录清单做备份使用cpio(1)是不错的选择。它并不像tarcpio并不知道如何走访目录树,所以必须提供档案的清单才能做备份。

例如,档案的清单可以使用lsfind来产生。以下例子会建立一个目前目录的递归清单然后转送(Piped)给cpio来建立名称为/tmp/mybackup.cpio的备份档。

例 17.5. 使用lscpio来制作目前目录的递归备份
# ls -R | cpio -ovF /tmp/mybackup.cpio

有一个备份工具尝试整合tarcpio所提供的功能,便是pax(1)。经历数年,各种版本的tarcpio变的有一些无法兼容。POSIX®开发出pax,尝试读取与写入各种版本的cpio and tar格式并加入自己的新格式。

以先前的例子改使用pax会是:

例 17.6. 使用pax备份目前目录
# pax -wf /tmp/mybackup.pax .

17.8.3. 使用磁带备份数据

随着磁带的技术持续发展,当今的备份系统将异地备份与本地可移除媒体做了结合。FreeBSD支持任何使用SCSI的磁带机,如LTODAT,并有限制的支持SATAUSB磁带机。

SCSI磁带机在FreeBSD会使用sa(4)驱动程序以及/dev/sa0/dev/nsa0/dev/esa0装置,实体装置名称为/dev/sa0,当使用/dev/nsa0时,备份程序在写入档案之后不会倒带,这可允许写入超过一个档案到磁带,而使用/dev/esa0时,当关闭装置后便会退出磁带。

在FreeBSD中会使用mt来做磁带机的控制操作,例如在磁带中搜寻档案或写入磁带控制记号到磁带。例如,要保留磁带上的前三个档案,可以在写入新档案前跳过这些档案:

# mt -f /dev/nsa0 fsf 3

这个工具尚支持许多操作,请参考mt(1)了解详情。

要使用tar写入单一档案到磁带,可指定磁带装置的名称以及要备份的档案:

# tar cvf /dev/sa0 file

要从磁带上的tar封存盘还原档案到目前的目录可:

# tar xvf /dev/sa0

要备份一个UFS文件系统可使用dump。以下例子会备份/usr并在完成时不做倒带:

# dump -0aL -b64 -f /dev/nsa0 /usr

要以互动的方式从磁带上的dump档案还原到目前目录:

# restore -i -f /dev/nsa0

17.8.4. 第三方备份软件

FreeBSD Port套件集提供了许多第三方工具可用于排程建立备份,简化磁带备份并让备份更简单方便。许多这类的应用程序是以客户端/服务器为基础,可用来自动化单一系统或网络上所有电脑的备份。

较热门的工具包含AmandaBacularsync以及duplicity

17.8.5. 紧急恢复

除了正常的备份外,建议将下以步骤做为紧急准备计划的一部份。

替以下指令的输出建立一份可打印的复本:

  • gpart show

  • more /etc/fstab

  • dmesg

在安全的地方保存这份打印结果与安装媒体的复本,在紧急还原时可能会需要,接着开机进入安装媒体并选择Live CD 以存取救援Shell(Rescue shell),这个救援模式可以用来检视目前系统的状态,若有需要,可重新格式化磁盘然后自备份还原数据。

注意:

The installation media for FreeBSD/i386 11.2-RELEASE does not include a rescue shell. For this version, instead download and burn a Livefs CD image from ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/ISO-IMAGES/11.2/FreeBSD-11.2-RELEASE-i386-livefs.iso.

然后,测试救援Shell下的备份。记录下整个程序,将这份记录随媒体、列印结果、备份档一并保存,这份记录可以避免在紧张压力下做紧急还原时因不慎造成备份的毁坏。

要再安全性一点,则可将最新的备份储存在与实体电脑与磁碟机有一段明显距离的远端位置。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.