LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 434|回复: 0

tcsh problem

[复制链接]
发表于 2004-10-30 11:32:02 | 显示全部楼层 |阅读模式
When I use this shell, I lose my 35G data. :help
Can I get back my data?
And what's the problem in this shell?
Thanks a lot!
mkdir $TAPE  There is nothing been created!!
mv $DIRE/$NOME $TAPE/$NOME Where is my data been moved?


clear
echo " "
echo "To use this script you need TWO DLT"
echo " "
echo -n "Have you these? [YES/NO] "
set RESPONSE = $<
if ($RESPONSE == YES) then
        goto 1
else
        exit
endif

1:
set RESULT=`mt -f /dev/nst0 status`

if ($? == 0) then
        echo " "
        echo "DLT drive: OK "
        echo " "
else
        echo " "
        echo "The DLT drive is not seen"
        echo " "
        exit
endif

2:
echo " "
echo "Now you must insert a new tape into the drive"
echo "and wait during the TAPE IN USE blinking"
echo " "
echo -n "Is the TAPE IN USE light on? [YES/NO] "
set RESPONSE = $<
if ($RESPONSE == YES) then
        goto 3
else
        goto 2
endif

3:
set RESULT=`mt -f /dev/nst0 rewind 2>& ERROR`
set RESULT=`mt -f /dev/nst0 setdensity 0x84`

if ($? == 0) then
        echo " "
        echo "The density is now 35GB uncompressed"
        echo " "
else
        echo " "
        echo "The density definition is incorrect"
        echo " "
        exit
endif

echo " "

echo " "
echo "Now you are ready to write the FIRST DLT"
echo -n "It is all OK? [YES/NO] "
set RESPONSE = $<
if ($RESPONSE == YES) then
        goto 4
else
        exit
endif
4:
set file="TapeNumber"
if (-f $file) then
      set number=`cat $file`
      @ number = $number + 1
      echo $number >! $file
else
      set number=1
      echo $number > $file
endif
if ( $number > 999) then
      set fnumber=""$number
else if ( $number > 99 ) then
      set fnumber="0"$number
else if ( $number > 9 ) then
      set fnumber="00"$number
else
      set fnumber="000"$number
endif
set TAPE = "/dati3/SU_DLT/DLT-"$fnumber
set LUNTOT = 0
set DIRE = "/dati3/DATI_RAW"
mkdir $TAPE
set  MASSIMO = 34000
foreach NOME (`ls -1 $DIRE`)
   if ($NOME != $TAPE )  then
       set LUNGH = `du -sm $DIRE/$NOME |cut -f1`
       @ LUNTOT = ($LUNTOT + $LUNGH)
       echo $NOME $LUNGH $LUNTOT
       if ($LUNTOT < $MASSIMO) then
          mv $DIRE/$NOME $TAPE/$NOME
       endif
   endif
end
echo " "
echo "Now I am writing first DLT"
echo " "
tar -cvf /dev/nst0 $TAPE
if ($? == 0) then
        echo " "
        echo "First DLT  OK "
        echo " "
else
        echo " "
        echo "The writing was not correct"
        echo " "
        foreach NOME (`ls -1 $DIRE/$NOME`)
                mv  $TAPE/$NOME $DIRE/$NOME
        end
        rm -Rf $TAPE
        @ number = $number - 1
        echo $number >! $file
        exit
endif
echo " "
mt -f /dev/nst0 offline
echo " "
echo "Now extract DLT from drive and insert a new one"
echo "and wait during the TAPE IN USE blinking"
5:
echo " "
echo -n "Is the TAPE IN USE light on? [YES/NO] "
set RESPONSE = $<
if ($RESPONSE == YES) then
        goto 6
else
        goto 5
endif
6:
set RESULT=`mt -f /dev/nst0 rewind 2>& ERROR`
set RESULT=`mt -f /dev/nst0 setdensity 0x84`
echo " "
echo "Now I am writing second DLT"
echo " "

tar -cvf /dev/nst0 $TAPE

if ($? == 0) then
        echo " "
        echo "Second DLT  OK "
        echo " "
else
        echo " "
        echo "The writing was not correct"
        echo " "
        foreach NOME (`ls -1 $DIRE/$NOME`)
                mv  $TAPE/$NOME $DIRE/$NOME
        end
        rm -Rf $TAPE
        @ number = $number - 1
        echo $number >! $file
        exit
endif
echo " "
mt -f /dev/nst0 offline
echo " "
echo "Now extract DLT from drive"
exit
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表