电脑技术学习

UNIX系统备份关键的信息

dn001

使用 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" ]then    echo "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 所示。


清单 4. 避免显式地指定目录

$ tar cf etc.tar /etc      

;

这样可以确保将恢复的文件放到备用的目录,而不是运行中的某个位置。

这个用于删除旧文件的脚本将使用文件名,提取其中嵌入的日期和时间,并确定该文件是否属于指定的界限,例如,在不在特定的天数之内(请参见清单 5)。

标签: