备份和数据恢复入门,第

作者:Marcel Gagné

欢迎各位再次来到系统管理员专栏的又一期。本周我们从一个令人不悦的话题开始,没人喜欢谈论它...那就是系统备份。在接下来的几期专栏中,我想讨论备份策略、工具以及让整个过程不那么令人讨厌的方法。

你可以让几乎所有人同意备份是个好主意。 你也可以几乎肯定,没有人像他们应该做的那样经常进行备份。 虽然我不会指名道姓,但在过去的几年里,我认识很多人(尽管他们鼓吹定期备份的好处),但他们对待重要数据却有如下坏习惯:

  • 备份“偶尔”或“非常偶尔”进行

  • 备份未经验证(“肯定没问题,对吧?”)

  • 备份放在一张软盘上反复使用

  • 备份放在一盘磁带上反复使用

  • 备份到同一磁盘上的另一个目录

由于列举下去会没完没了,所以我就此打住。 只要说,当系统崩溃并且必须恢复数据时,它总是“重要”数据。 那么,保护重要数据的最佳方法是什么?

对于许多处理简单系统的人来说,数据,即我们的帐户、文字处理文档、电子邮件,才是唯一真正重要的部分。 在另一个操作系统的世界里,大多数备份都涉及到将文档复制到软盘。 我知道一个例子,一个用户只有一张软盘来存储所有重要的文档,因为他们担心硬盘会崩溃! 真事。

软盘的问题在于它们只能容纳这么多信息。 备份你的整个系统将需要数年时间(无论如何也要几个小时),并且事后需要镇静剂。 每个系统都应该有一些大容量存储备份,比如磁带驱动器。 如果您需要的设备存在于其他机器上,则可以进行网络备份,但这又是另一个话题了。

好吧,我承认在某些情况下你没有合适的备份设备,你需要解决方案。 例如...

许多人利用 Linux 强大的网络工具和伪装(更不用说价格)来为公司创建简单的邮件服务器和互联网网关。 公司给了你这台机器,因为没人用它,你告诉他们 Linux 可以用于沙丁鱼。 这台机器是一台旧的 486,带有一个 2 速 CD-ROM 和没有磁带驱动器。 你要过磁带驱动器,但你坚持认为 Linux 不会花费他们任何费用,并且会给他们全世界,这让你违反了基本规则之一,并在备份方面偷工减料。

在这台服务器上,您可能正在运行 diald、fetchmail、IP 伪装和电子邮件。 不是很复杂,数据(电子邮件)无论如何都会传输到用户 PC。 那里没什么好担心的,对吧? 但请记住,你花了几个小时来正确调整这台机器,并为拨号和连接到你的 ISP 获得正确的设置。 当然,Linux 非常稳定,但磁盘会崩溃。 你可以在几分钟内从 CD-ROM 重新安装 Linux,但要让一切都恰到好处可能需要比这更长的时间,而且用户昨天就想要他们的电子邮件和互联网访问。

拥有所有东西是个好主意,但并非总是必需的。 由于这种类型的系统本质上是其配置文件的总和,你可以进行我称之为身份备份的操作。 此脚本将收集所有使你的组装服务器在所有其他组装服务器中独一无二的文件。 脚本如下所示。

   #!/bin/bash
   #
   # Identity backup for Linux systems
   # This script does a backup of important files 
   # Marcel Gagne, 2000
   #
   clear
   echo "Identity backup for Linux systems"
   echo "2000: Salmar Consulting Inc."
   echo ""
   #
   echo "Please enter a directory name for temporary image storage."
   echo "ie: /data1/PROTECT"
   #
   read PROTECT_dir
   #
   #####################################################
   # Start by copying config files in etc
   mkdir -p $PROTECT_dir/etc/rc.d
   mkdir $PROTECT_dir/root
   mkdir -p $PROTECT_dir/usr/local/.Admin
   
   cd /etc
   for file_names in passwd group shadow profile bashrc sendmail.cw          
   sendmail.cf hosts hosts.allow hosts.deny named.conf named.boot 
   hosts.lpd diald.conf aliases
   do
       cp $file_names $PROTECT_dir/etc
   done
   find nsdata -print | cpio -pduvm $PROTECT_dir/etc
   find ppp -print | cpio -pduvm $PROTECT_dir/etc
   find sysconfig -print | cpio -pduvm $PROTECT_dir/etc
   cp rc.d/rc.local $PROTECT_dir/etc/rc.d
   #
   cd /
   cp /root/.fetchmailrc $PROTECT_dir/root
   find usr/local/.Admin -print | cpio -pduvm $PROTECT_dir/usr

基本原理是这样的。 在获得临时备份目录后,我通过创建我想要重新创建的目录层次结构来构建结构。 (在 mkdir 上使用 -p 标志,我可以节省一些击键次数,并在一次传递中创建我需要的整个子目录。)

我经常将一些小的管理脚本保存到一个名为 /usr/local/.Admin 的目录中,就像这个脚本一样。 因此,在脚本中,我确保备份该目录作为我的身份备份的一部分。 如果你想使用不同的目录,请确保考虑到这一点。 编写脚本后,我使其成为可执行脚本并运行它

   # chmod 700 /usr/local/.Admin/identity_backup
   # /usr/local/.Admin/identity_backup

当脚本运行时,我在我的服务器上给它一个目录名。 我经常使用 /data1/PROTECT/something/PROTECT,但你可以使用任何有意义的名称,当然要确保你复制到的文件系统有足够的磁盘空间。 我最终得到的是我系统的一种配置“镜像”。 我可以从最初存在的结构副本中快速拉回我需要的文件。

此备份项目列表绝非完整。 我正在获取最少的文件和配置,以便在灾难发生时尽快重建功能系统。 现在我们有了这个快速身份快照,我们应该怎么做呢? 如果你在 /data1 中创建了你的 PROTECT_dir,你将执行以下操作

   # cd /data1
   # tar -czvf hostname.identity.tar PROTECT_dir

这将创建一个系统配置的 tar 和 gzip 压缩文件。 下一步是将它从系统上取下来,放到安全的地方。 如果文件足够小(有时是这种情况),你可以将其保存到软盘。 事实上,你可以将整个文件 tar 压缩到软盘上,并省去一个步骤。 或者,你可以将文件 ftp 到另一台服务器、Windows PC,或者(如果你是远程工作的系统管理员)到你自己的服务器。 几分钟前,我在一台充当公司电子邮件/互联网网关的远程 Linux 系统上测试了你看到的脚本。 生成的文件大约 35 KB。 你可以在自己的系统上存储大量此类文件。

如果你想将这个“身份”提取到你的本地系统,你可以这样做

   # mkdir -p /home/remote_servers/hostname
   # cd /home/remote_servers/hostname
   # tar -xzvf hostname.identity.tar.gz

就这样! 你的系统独一无二之处的副本,但保存在服务器本身以外的其他地方。

警告! 这不是备份的全面解决方案。 为此,我们需要讨论其他看待你的系统、你的数据以及你如何存储数据的方式。 这正是我打算在这个系列中探讨的方向。

就这样,我们结束了又一周。 在我们再次聊天之前,请记住,当你失落时,只有良好的备份才能让你重新振作起来。

电子邮件:ljeditors@ssc.com

加载 Disqus 评论