8 Linux管理员手册--备份( 二 )



dump 不同,它直接读文件系统,而不通过文件系统 。It is also written specifically for backups; tar 和cpio are really for archiving files, although they work for backups as well.

直接读文件系统有些优点,它可能不考虑time stamps备份所有文件;对于tar 和cpio ,必须先将文件系统只读安装 。直接读文件系统更有效,如果所有东西都要备份,因为它使磁头移动最少 。它的主要缺点是每个文件系统种类需要特定的备份程序,Linux的dump 程序只理解ext2文件系统 。

dump 也直接支持备份级(下面讨论);对tar 和cpio ,这必须用其他工具实现 。

第三方备份工具的比较超出了本书的范围 。Linux Software Map列出了许多freeware的 。

简单备份

一个简单的备份方案是一次备份所有东西,然后备份上次备份后改变的所有东西 。第一个备份叫全备份full backup,后来的叫i增量备份ncremental backups 。全备份比增量备份费时费力,因为有更多的东西写到磁带,而且全备份可能不能放如一盘磁带中(更别说软盘了) 。回存增量备份比全备份可能要花更多的时间 。备份可以这样优化,就是自上次全备份以后,总用增量备份保存所有改过的文件 。这样,备份可能需要多一些的工作,但你只需回存一个全备份和一个增量备份 。

如果有6盘磁带想每天备份,可以用磁带1做第一个全备份(比如在星期五),用磁带2-5做增量备份(周一到周四) 。然后用磁带6做新的全备份(第二个周五),然后再用磁带2-5做增量备份 。在做完新的全备份之前不要覆盖旧的全备份(磁带1),一面在做全备份的时候出现问题 。有了新的全备份磁带6以后,最好在另一个地方保存磁带1,这样如果有一个全备份磁带在火灾中损失了,还能有一个 。当再做下一个全备份是,再用磁带1而保存磁带6 。

如果你有多于6盘磁带,可以用多的做全备份 。每次做全备份,应该使用最老的磁带 。这样你会有最近几周的全备份,对你如果想找到一个现在已经删除的就文件,或一个文件的旧版本很有用 。

用tar备份

一个全备份可以很容易地用tar 实现:

# tar -create -file /dev/ftape /usr/src
tar: Removing leading / from absolute path names in the archive
#

上面的例子使用GNU版本的tar 及其长选项名 。传统版本的tar 只理解单字符选项 。GNU版还能处理一盘磁带或一张磁盘不能容纳的备份,及很长的路径名;这不是所有传统的版本能作到的 。(Linux只使用GNU tar。)

如果你的备份一盘磁带不能容纳,你需要使用-multi-volume (-M)选项:

# tar -cMf /dev/fd0H1440 /usr/src
tar: Removing leading / from absolute path names in the archive
Prepare volume #2 for /dev/fd0H1440 and hit return:
#

注意开始备份前要格式化所有软盘,或在tar 需要新软盘时用另一个虚拟控制台或虚拟终端格式化它 。
备份完后,应该检查它是否完好,用-compare (-d)选项:

# tar -compare -verbose -f /dev/ftape
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
....
#

失败的备份检查意味着如果你丢失了原始数据,备份也无法恢复 。

增量备份可用带-newer (-N)选项的tar 来实现:

# tar -create -newer "8 Sep 1995" -file /dev/ftape /usr/src -verbose
tar: Removing leading / from absolute path names in the archive
usr/src/
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/modules/
usr/src/linux-1.2.10-includes/include/asm-generic/
usr/src/linux-1.2.10-includes/include/asm-i386/
usr/src/linux-1.2.10-includes/include/asm-mips/
usr/src/linux-1.2.10-includes/include/asm-alpha/

推荐阅读