ChinaUnix.net
 >> ChinaUnix.net > Solaris

拷贝系统盘的脚本

作者:jxbcpp     发表时间:2002/11/26 10:28pm

[这个贴子最后由jxbcpp在 2002/11/26 10:30pm 编辑]

这个脚本用于把当前系统盘复制到指定的某个硬盘(两个硬盘需一样大小,否则自习修改脚本吧)

#!/bin/sh
#programed by jxbcpp,QQ:589210

if test $# -lt  1
then
echo "\tUsage:$0 DestDisk"
echo "\tExample: If you want to make a mirror disk c0t1d0 of boot disk"
echo "       You can use: $0 c0t1d0"
exit
fi

SourDisk=`df -k /|tail -1|awk -F'/' '{print $4}'|awk -F's' '{print $1}'`
DestDisk=$1

answer=`/usr/bin/ckyorn -d n -p "Do you want to mirror disk $SourDisk to $DestDisk?[Y/N]"`

if [ ! $answer = Y -a ! $answer = y ]
then
exit
fi

if [ $SourDisk = $DestDisk ]
then
       echo "\t***********************************************"
       echo "\t\tDestDisk cann't be system disk!"
       echo "\t***********************************************"
       exit
fi

echo "\nCopy partition table..."
prtvtoc /dev/rdsk/${SourDisk}s2 |fmthard -s - /dev/rdsk/${DestDisk}s2
if test $? -ne 0
then
echo "\t***********************************************"
echo "\t\tTwo Disks must be the same size!"
echo "\t***********************************************"
exit
fi
echo "\t***********************************************"
echo "\t\tCopy partition table Sucessfully!"
echo "\t***********************************************"

SWAP=`grep swap /etc/vfstab|grep dev|awk '{print $1}'`
prtvtoc /dev/rdsk/${SourDisk}s2|grep -v "^*" |awk '{print $1}' >/tmp/.asdfg

success=0

while read DD
do
if [ $DD -eq 2 ]
then
continue
fi

if [ /dev/dsk/${SourDisk}s${DD} = $SWAP ]
then
continue
fi

echo "\n\nDump /dev/dsk/${SourDisk}s${DD}"

mkdir /tmp/$DD
echo y|newfs /dev/rdsk/${DestDisk}s${DD}
if [ $? -ne 0 ]
then
echo "\t***********************************************"
echo "\t\tNewfs error!"
echo "\t***********************************************"
success=1
exit
fi

mount /dev/dsk/${DestDisk}s${DD} /tmp/$DD
ufsdump 0f - /dev/dsk/${SourDisk}s${DD}|(cd  /tmp/$DD; ufsrestore -rf - )
rm /tmp/$DD/restoresymtable

if [ $DD -eq 0 ]
then
touch /tmp/0/reconfigure
fi

umount /tmp/${DD}
rmdir /tmp/${DD}

echo "\t***********************************************"
echo "\t\tDump /dev/dsk/${SourDisk}s${DD} Successfully!"
echo "\t***********************************************"

done < /tmp/.asdfg

if [ $success -eq 0 ]
then
installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/${DestDisk}s0
echo "\t***********************************************"
echo "\t\tMirror Sucessfully!"
echo "\t***********************************************"
fi


此文章相关评论:
该文章有5个相关评论如下:(点这儿可以发表评论)
daemonix 发表于: 2002/11/26 10:31pm
瓦,高人
 
sunmarmot 发表于: 2002/11/26 11:10pm
[这个贴子最后由sunmarmot在 2002/11/28 03:23pm 编辑]

又发现一个老大!!!!

根据老大的指点,偶把偶晚上问的关于如何使用这个.sh帖出来

你现在的系统盘是c1t0d0,想在c1t1d0上做备份
则运行:
CopyBootDisk.sh c1t1d0
万一你的系统盘坏了,就可以把这个盘插到c1t0d0的位置,系统就可以用了

hohohohoh~~~~~~~~~又多了把刷子

 
liuqinghe 发表于: 2002/11/27 04:34pm
真牛b
 
YT 发表于: 2002/11/27 09:08pm
好,支持!
 
sunmarmot 发表于: 2002/11/28 04:53pm
实验ing,期待ing。。。。。。。。。。
 
 

Copyright © ChinaUnix.net  *  转载请注明出处及作者