备份和数据恢复简述,第 3 部分
欢迎回到系统管理员专栏的又一次轻松愉快的课程,在这里,每一天都是节日,因为没有什么比管理您自己的 Linux 系统更有趣了。今天,我们将继续深入备份的世界。
您的 Linux 系统实际上有许多备份选项。最常用的命令是 cpio 和 tar。其他命令行工具,如 dd、dump 和 afio 也可用(尽管 afio 可能未包含在您的发行版中)。tar 和 cpio 仍然非常有用且功能强大,也是我个人常用的工具。
cpio 相对于 tar 的主要优势在于,它在备份介质上对数据的打包效果更好,并且在处理错误方面也更好,尤其是在处理磁带时。还有另一个优势。使用 tar 时,您往往以目录或文件的短列表为单位进行操作。使用 cpio,您可以很大程度上自定义最终归档的文件。例如,您可以从文件列表开始,并将该列表直接管道传输到 cpio
cpio -ov > /dev/st0 < /tmp/list_of_files
-o 选项表示将归档 输出 到 /dev/st0,并从名为 list_of_files 的文件中获取列表。然后我可以返回并通过读取磁带并检查目录来检查备份。这可以通过 -t 选项完成
cpio -ivt < /dev/st0
要从该归档中提取文件,我需要知道它是如何存储的(归档的路径)。该命令非常简单。假设我想恢复一个名为“lost_file”的文件。我会这样做
cpio -iv lost_file < /dev/st0
我还想介绍一下 tar。我承认我可能比任何其他命令都更频繁地使用 tar。部分原因是习惯,因为我已经 tar 文件多年了,部分原因还在于单文件归档总是以 tar 格式交付,并以某种方式压缩(如 cool_new_software.tar.gz)。
Linux 的 tar 不是您普通的 tar;它是 GNU tar。这意味着您拥有一些优势,使其更加有趣。例如,GNU tar 可以进行即时压缩(包括标准压缩和 gzip 压缩)。您还可以指定多卷备份。以下是一些示例。
tar -cvf /dev/fd0 /mydata
这样,我就可以将目录 /mydata 备份到我的软盘。偶尔,没有什么比使用软盘更方便的了。不幸的是,正如我之前提到的,软盘上的空间非常有限。如果我的软盘对于该数据量来说太小怎么办?没问题(假设我不需要 大量 软盘)。只需使用 -M 标志,系统就会提示您输入多卷备份中的下一个卷。像这样
tar -cvMf /dev/fd0 /mydata
要压缩数据(您不能在多卷上使用压缩;抱歉),您可以使用 -z 标志。例如,如果我想归档 /mydata 并将其 gzip 压缩到我的磁带驱动器,我将使用此命令
tar -czvf /dev/st0 /mydata
对于传统的 zcat 类型压缩(如 compress 命令),请使用大写 Z 标志而不是小写 z。
关于介质问题,我是这样看的。软盘 对于存储少量文件集合(例如几周前的身份备份)非常方便,但其容量非常有限。CD-RW 可靠,访问速度合理,但容量(虽然比软盘大得多)仍然有限。2GB 的 Jaz 驱动器非常热门,但目前 2GB 几乎是极限,并且备用盒式磁盘可能价格昂贵。在我的社区,一个 2GB 的盒式磁盘售价约为 150 美元。它适用于不频繁的备份和变化不大的数据,但存在限制。您可以使用 备用硬盘,但使用该方案进行数据的多次归档有点困难。不过,速度非常快。然后,还有 磁带。
磁带本身相对便宜(一个 12GB DDS 磁带在这里大约花费 25 美元)。然而,磁带的首要优势是 容量。除了可能另一块磁盘外,没有任何其他介质可以提供当今磁带驱动器的备份容量;当然,成本也不可比拟。就容量而言,现在可以获得 Linux 兼容的磁带驱动器,它可以在单盘磁带上备份惊人的 50GB。
大容量带来了另一个巨大的优势:无人值守备份。您可以在晚上外出之前放入磁带,而不是坐在那里观看文件列表滚动到屏幕上。只需稍加创意,您就可以验证备份,捕获已备份内容的列表,并在早上将结果邮寄给您。例如,看看这个匆忙构建的脚本,我非常确定它可以更漂亮。
#!/bin/bash # # 4mm.dataonly - This Short Backup Script backs up only my data # 2000 - Marcel Gagne # # Set up some file pointers for short backup sb_log=/usr/local/.Admin/dataonly.log sb_errlog=/usr/local/.Admin/dataonly.err # Do we capture the file list, or send it to dev null? # file_log=/usr/local/.Admin/backup.log file_log=/dev/null admin_dir=/usr/local/.Admin # Do a little cleanup. mv $sb_log $sb_log.old mv $sb_errlog $sb_errlog.old # Prepare report headers # echo "==============================================" > $sb_errlog echo "What follows is a report of errors encountered" >> $sb_errlog echo "during the backup or its subsequent verify." >> $sb_errlog echo "==============================================" >> $sb_errlog echo "Data Only Nightly Backup. <`date`>" >> $sb_log echo "============================================================" >> $sb_log #Get on with actual backup # echo "** Moving to data directory..." >> $sb_log cd /root echo "***Nightly Backup Starting : `date`..." >> $sb_log echo "Backup errors ..." >>$sb_errlog tar -cvf /dev/st0 . 2>>$sb_errlog # Verify Backup # start by rewinding the tape mt -f /dev/st0 rewind echo "****Verifying the Backup : `date` *** " >> $sb_log echo "Restore and verify errors . . ." >>$sb_errlog tar -vtf /dev/st0 2>>$sb_errlog echo "*****Nightly Backup Completed : `date`..." >> $sb_log # Report on this, will you? cat $sb_errlog >> $sb_log mail -s "Dataonly backup status report" root < $sb_log
第二天早上我来上班时,我的备份已经完成,并且我收到一封电子邮件,告诉我备份何时开始以及持续了多长时间。如果磁带向 STDERR(标准错误)生成了消息,我将在该消息中看到它。
我还在其中加入了一个选项,用于列出备份和还原的文件。警告! 这会占用大量磁盘空间,这就是为什么我的 file_log 具有转到文件或 /dev/null 的选项的原因。由于我的 4mm DAT 可以备份 4 到 8 GB,我可以让它每晚都发生,并通过 cron 作业运行,而无需担心。我所要做的就是记住放入磁带。这是一个 cron 条目,用于在周一至周五每晚 11 点运行的备份。
0 23 * * 1-5 /usr/local/.Admin/4mm.dataonly
虽然这看起来可能不是最充分的论据,但 工具 是我将提出的支持磁带的另一点。由于磁带(无论好坏)是数据保护世界发展起来的介质,因此绝大多数备份工具都设计为与磁带配合使用。这些工具的范围从免费到非常昂贵。我喜欢的工具之一是名为 taper 的工具(尽管它每个归档仅限于 4GB)。虽然 taper 可以与软盘驱动器或磁盘文件等一起使用,但它实际上是一个磁带工具。taper 还具有漂亮的 ncurses 屏幕。
Taper(由 Yusuf Nagree 编写)可以通过访问 http://www.e-survey.net.au/taper/ 找到。
安装非常简单。我所做的只是下载最新版本 (taper-6.9b.tar.gz) 并按照几个步骤操作。该页面还包含一个警告,确保您拥有 ncurses 4.1 或更高版本。
tar -xzvf taper-6.9b.tar.gz cd taper-6.9b make make install
然后,您使用命令开关启动 taper 以定义要备份到的介质。是的,尽管我大谈特谈磁带,但我提到的是一个工具,它在磁盘上的文件、软盘驱动器、Zip 驱动器或(您猜对了)多种不同的磁带驱动器上都非常适用。
使用这个小程序,您还有磁带以外的其他选项。使用命令开关,您可以定义目标位置。以下是一些示例
taper -T s # starts taper with a SCSI tape drive taper -T r # starts taper with a floppy
-r 选项可以进一步修改以使用 Zip 驱动器等,尽管我个人没有尝试过。
界面简单且菜单驱动。要备份您的数据,请选择“Backup Module”(备份模块)。该软件将在开始时识别您的磁带,并要求您输入归档和卷标题。例如,我使用了“Web 服务器归档”和“卷 1”作为我的存储信息。然后,您将看到一个目录列表,相对于您启动 taper 的位置。您可以使用单键选择要包含在备份中的文件。 i 表示包含文件(或目录),u 表示“取消包含”,如果您改变主意。完成选择后,只需按 f 表示“完成”,taper 就会开始工作,并提供一个运行报告,说明它在何处,以及它预计整个过程需要多长时间以及已经进行了多远。
为了还原,请选择 Restore Module(还原模块)。您将看到备份和归档的列表。从列表中选择,然后按 <return>。系统将提示您输入希望还原归档的目录(您可能不希望您的文件与您开始的目录完全相同)。选择您要还原的文件(与上述方式相同),并在完成后按 f。
哇!今天我已经讲得太久了。下次我们在这个专栏再次聚首时,我将总结当前对备份的探讨,并介绍一些其他使备份更容易的选项,包括对网络上 Windows 机器的一些建议。不!没什么那样的!在我们再次聊天之前,请记住,当您遇到困难时,只有良好的备份才能让您重新站起来。
电子邮件:ljeditors@ssc.com