• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

一个用于SCO Unix系统的磁带拷贝程序

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网
北京中软同和系统集成有限公司     何绍德
    在Unix系统中,除了使用软盘介质,光盘介质外,还广泛使用磁带介质。特别是在系统备份,数据备份中目前主要使用的还是磁带介质。因此会经常要作磁带的拷贝。
本文提供的程序tapecopy可以实现Unix系统中磁带对磁带的拷贝。该程序是用shell语言写成,并在SCO Unix系统中调试通过。由于该程序是用标准的shell语言写成,所以很容易移植到其它Unix系统上。
该程序的原理是利用Unix系统命令dd, 先把整个源磁带分为一个个文件拷贝到磁盘上,然后再把这些文件拷贝到目的磁带上,最后再把这些文件从磁盘上删除。
UNIX系统提供的dd命令,能将指定的输入文件拷贝到一个指定的输出文件上,并能进行格式转换。由于UNIX系统将输入/输出设备作为文件处理,因此可以用dd命令来复制软磁盘和磁带。下面给出dd命令的格式和主要选择项取值。
dd命令的格式:dd [ 选择项=值 ]
选择项 值
if=file             输入文件名;标准输入是缺省的。
of=file             输出文件名;标准输出是缺省的。
ibs=n            输入块大小为n个字节(缺省值为BSIZE)。
obs=n            输出块大小为n个字节(缺省值为BSIZE)
cbs=n             转换缓冲区大小
skip=n            跳过n个记录后输入
seek=n            跳过n个记录后输出
count=n        仅复制n个记录
dd命令是逐个记录读入输入文件,然后逐个记录写到输出文件上。在dd命令中,如果设定了数据块的大小(ibs, obs),一个记录就等于一个数据块的大小。如果没有设定选择项ibs, obs, 则一个记录为1024个字节。
    本程序使用SCSI磁带设备文件(/dev/nrStp0),如果使用其它磁带设备,请修改dd命令中磁带设备文件名。


程序tapecopy

/bin/echo " ********************************************************"
/bin/echo " * Wellcom to use the tape copy program *"
/bin/echo " * *"
/bin/echo " * Made by CS&S He Shao De *"
/bin/echo " * 1997.3 *"
/bin/echo " *********************************************************"
/bin/echo "\n"
/bin/echo "mounted file"
/bin/echo "system name available free disk spaces"
/bin/echo "----------- -----------------------------"
dfspace | grep "Disk space:" 
/bin/echo "-----------------------------------------------------------------------"
/bin/echo "\nPlease select a file system that its available free disk spaces"
/bin/echo "can hold your source tape size. If the available free disk spaces"
/bin/echo "can't hold source tape size, please key 'q' to quit."
/bin/echo "\nPlease entry the name of selected file system or key 'q' to quit: \c"
read filesys
if [ $filesys = "q" ]
then exit
fi
a="/"
if [ $filesys = "/" ]
then directory=$filesys
else directory=$filesys$a
fi
answer="n"
while [ $answer = "n" ]
do
/bin/echo "\nPlease insert your source tape."
/bin/echo "Are you ready [y/n]? \c"
read answer
done
tape rewind
fileseq=0
while :
do
fileseq=`expr $fileseq + 1`
filename=$directory$fileseq
dd if=/dev/nrStp0 of=$filename
[ -s $filename ] || break
done
answer="y"
flag=0
while [ $answer = "y" ]
do
if [ $flag -eq 0 ]
    then /bin/echo "\nPlease insert your blank tape"
    /bin/echo "Are you ready [y/n]? \c"
    read enter
if [ $enter != "y" ]
        then continue
    fi
    else /bin/echo "\nDo you like copy another tape [y/n]? \c"
    read enter
    if [ $enter = "y" ]
        then flag=0
        continue
        else answer="n"
        continue
    fi
fi
count=$fileseq
fileseq=1
tape rewind
while [ $fileseq -ne $count ]
do
    /bin/echo "\nIt is working on $fileseq"
    filename=$directory$fileseq
    dd if=$filename of=/dev/nrStp0
    fileseq=`expr $fileseq + 1`
done
flag=1
done
while [ $fileseq -ne 0 ]
do
filename=$directory$fileseq
rm -f $filename
fileseq=`expr $fileseq - 1`
done

 wind521 回复于:2003-05-19 10:36:56
不错,这个东东有用呀!

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网