UNIX系统备份关键的信息( 二 )


从灾难恢复的角度来看,可移动存储设备(磁带、磁盘、甚至 USB)是最可靠的备份,因为可以将所存储的信息保存在现场以外的其他位置 。这样做可以在放置计算机的场所遭遇大灾难(如火灾或被盗)时,得以幸免 。
使用另一台计算机进行存储则意味着备份数据基本上是联机的和可用的 。在这种情况下,恢复备份数据可能非常简单,在发生故障时只需将这些文件复制回您的服务器,或者在发生系统故障时将它们复制到替换系统 。
当使用另一台计算机来存储您的备份数据时,最好在本地保存这些文件的多个副本,但是应该在可能的情况下,为这些文件使用直接可用的非现场位置 。这台计算机可能是 Internet 上的另一台计算机、您的 WAN 或其他站点上的另一台计算机 。这样可以提供必要的冗余和安全性 。
使用专业的或商业的备份解决方案,您需要在恢复备份数据之前,重新安装该软件,而在安装该软件之前,可能需要使用某些配置信息和关键文件 。
使用 tar 存储备份数据
使用 tar、cpio 或其他的存档文件类型,可能是最直接的信息存储方式 。当使用这种方法时,最好注明这些文件的日期,并创建一个简单的备份脚本,专门用来生成指定的文件 。另一方面,您还需要一种方法,以便删除不再需要的备份数据(例如,那些超过了特定时间段的备份数据) 。
清单 1 显示了一个简单的脚本,该脚本为不同的目录创建了经过 tar 处理和压缩(使用 bzip2)的备份 。这些备份文件创建于与远程系统共享的网络文件系统 (NFS),而该远程系统保留了相应的备份副本 。
清单 1. 为不同的目录创建经过 tar 处理和压缩的备份
#!/bin/bashDATE=`date%Y%m%d.%H%M`HOST=`hostname`TEMP=/mnt/backupprepareecho "Preparing backup..."cd $TEMPfiles=`/usr/local/mcslp/filesbydate.pl notlast5days $HOST*`if [ -n "$files" ]thenecho "Deleting old files: $files"rm $filesficd /etctar cf - ./* |bzip2 -9 - >$TEMP/$HOST-etc.$DATE.tar.bz2cd /var/bindtar cf - ./* |bzip2 -9 - >$TEMP/$HOST-bind.$DATE.tar.bz2cd /export/home/webstar cf - ./* |bzip2 -9 - >$TEMP/$HOST-webs.$DATE.tar.bz2cd /etc/apache2tar cf - ./* |bzip2 -9 - >$TEMP/$HOST-webconfig.$DATE.tar.bz2
;;使用 date 命令生成 DATE 变量,并创建一个“20060627.2200或“10PM on 27th of June 2006形式的文件名 。要使得备份脚本具有可移植性,要求创建的所有文件的前缀中包含创建该文件的主机的名称,这样一来就可以很容易地将多台主机的内容备份到相同的位置,并且 TEMP 目录作为每个备份的目标 。
使用单独的 Perl 脚本来确定可以对备份准备目录中哪些文件进行删除 。稍后将研究这个脚本 。在这个脚本中,您可以指定需要保留最近 5 天的文件,换句话说,该脚本将根据备份文件的文件名中的日期说明,选择那些不是最近 5 天内创建的文件 。
实际的备份过程是一个简单的 tar 命令,同时还使用了 bzip2 对文件进行压缩 。因为生成的文件可能很大,所以您可能需要对这个方法进行改进,以便仅选择那些可能在某个时间段内进行过更改的文件 。通过使用 find 命令选择所需的文件(请参见清单 2),您可以达到这个目的 。
清单 2. 使用 bzip2 对文件进行压缩的 tar 命令
tar cf - `find . -type f -mtime -1` | bzip2 -9 - >$TEMP/$HOST-webconfig.$DATE.tar.bz2
;;您可以在 find 语句中仅指定需要选择的文件,这样可以防止对目录的更改导致将那些没有更改的文件包含到 tar 文件中 。这将包含当前目录中的文件,如清单 3 所示 。
清单 3. 引用当前目录
$ cd /etc$ tar cf etc.tar ./*;
这样做可以避免显式地指定目录,如清单 4 所示 。

推荐阅读