Symantec备份软件独立磁带驱动集

本文同步自(最佳显示效果请点击):https://zohead.com/archives/symantec-tape-driver/

最近需要使用 Symantec Backup Exec、NetBackup 等备份软件测试磁带库,而且 Backup Exec 中已经自带了很多的磁带和磁带库的驱动,但是这些驱动没法独立出来用。特别是在新的 Windows 系统上,如果 Backup Exec 备份软件无法安装,而又找不到磁带驱动,这时就需要专门的 Symantec 的磁带驱动集了。

Symantec 官方网站上有最新版本的 Tape Device Drivers 更新程序,例如:

http://www.symantec.com/business/support/index?page=content&id=TECH173790

这个是 Symantec Backup Exec 2010 R3 版本的最新磁带驱动集。

下载之后,你会发现这个更新程序必须在安装了其对应版本的备份软件之后才能运行,不同远程安装到别的机器上,这多少显得非常不便。为此我从 Symantec 官网最新版本的 Tape Device Drivers 程序中导出了所有的驱动和安装程序并打包,此包可以在没有安装 Symantec 软件的情况下,通过设备管理器直接找到解压缩的目录进行磁带驱动安装。如果安装了 Symantec 备份软件,你也可以直接用包中的 tapeinst.exe 程序自动安装更新磁带的驱动。

做这个驱动集合包的步骤也很简单,解压缩 Symantec 安装程序,然后从中得到 Data.cab 之类的压缩包并解压缩(新版本的安装程序中可能是 msp 类型的数据文件,可以用 Universal Extractor 之类的软件进行解压)。解压缩之后会看到一堆文件名很长的文件,例如:F1078_testfile.sy_.1B15BB01_8E2D_4A12_A3E6_175864F3EF67。

实际上这种长的文件是压缩过的驱动程序(原文件名:testfile.sys),只不过文件名上加了点处理,为此我写了个非常简单的脚本进行自动遍历文件并解压缩:

#!/bin/sh
# extract symantec tape device drivers from its MSI file
# file name form: F1078_testfile.sy_.1B15BB01_8E2D_4A12_A3E6_175864F3EF67"

IND="tapedrvs"
mkdir $IND

for j in `ls *`; do
	# get real file name in full file name
	ONAME=`echo $j | awk '{print substr($0,7,length($0)-43);}'`
	# determine whether file is compressed
	EXNAME=`echo $ONAME 2>/dev/null | awk -F "." '{if (substr($0,length($0),1)=="_" && NF>1) {print $NF;}}' 2>/dev/null`

	if [ "x$ONAME" = "x" ]; then
		continue
	fi

	if [ "x$EXNAME" != "x" ]; then
		# try to fix prefix name for some common file types
		NNM=""
		if [ $EXNAME = "CF_" ]; then
			NNM="CFG"
		elif [ $EXNAME = "cf_" ]; then
			NNM="cfg"
		elif [ $EXNAME = "dl_" ]; then
			NNM="dll"
		elif [ $EXNAME = "ex_" ]; then
			NNM="exe"
		elif [ $EXNAME = "in_" ]; then
			NNM="inf"
		elif [ $EXNAME = "sy_" ]; then
			NNM="sys"
		elif [ $EXNAME = "tt_" ]; then
			NNM="ttf"
		elif [ $EXNAME = "vs_" ]; then
			NNM="vsd"
		fi

		if [ -z "$NNM" ]; then
			echo "Unknown prefix of $ONAME in $j"
		else
			# use expand to extract file
			NNM=`echo $ONAME | sed 's/'$EXNAME'$/'$NNM'/g'`
			expand $j $IND/$NNM
		fi
	else
		cp $j $IND/$ONAME
	fi
done

这个脚本用到了 Windows 下的命令,因此需要在 Windows 下通过 Mingw 或者 Cygwin 之类的类 Linux shell 环境来运行。此脚本已在 Symantec 几个不同版本的 Backup Exec、NetBackup 备份软件的 Tape Device Drivers 包下验证过。

脚本会自动判断遍历到的文件是否是压缩的(压缩的文件扩展名名是以下划线结尾的,例如 test.exe 压缩后变为 test.ex_),如果是压缩的,则尝试自动修改后缀名,并通过 Windows 自带的 expand 命令将压缩的文件解压缩到指定的目录中(压缩的文件名 [test.ex_] 变换为正常的文件名 [test.exe]),如果没有识别到压缩文件类型,脚本会将压缩文件名和上面的完整文件名打印输出方便用户手工处理。如果遍历到的文件不是压缩的,那直接拷贝到指定的目录中(文件名也变换为正常的文件名)。

我已经打包好的 Symantec 磁带驱动集可以在这里下载:

http://miseal.googlecode.com/files/symantec-tape-drv-v1.0.7z

PS:

如果有的磁带未找到驱动,但确认 Symantec 可以支持,你可以自己修改解压缩出来的 vrtstape.inf 配置文件将自己的磁带设备信息加进入。另外 extract-symantec-driver 脚本也已经在压缩包中。这个驱动集主要是方便自己测试使用的,如果有任何问题欢迎指正哦。

Leave a Comment

Your email address will not be published. Required fields are marked *

*