FANDOM


Comandos para unidades de cinta

Comandos basicos "Incompleto"Editar

Las unidades de cinta tienen dos formas de ser tradadas, st "rebobina al finalizar cualquier operacion" nst "no rebobina al finalizar la operacion"

Hay que tener mucho cuidado cuando se arma un script, por ejemplo en un script de backup, si utilizamos st en un script simple como este:

#!/bin/bash

tar -cvf /dev/st0 /tmp

tar -cvf /dev/st0 /datos

tar -cvf /dev/st0 /home

Lo unico que nos quedara en la cinta es /home, ya que al terminar cada operacion rebobina y pisa con el siguiente backup

Para comprobar el contenido de la cinta tar -tvf /dev/st0

Script de mi autoriaEditar

Tapes2

No soy programador, asi que pueden mejorarlo, esto fue realizado a prueba y error para manejar distintas unidades de cinta con el comando dd

#!/bin/sh

############DECLARO#######################################################

stat1=` mt -f /dev/st0 status | tail -n 1 | cut -d" " -f4,6`

stat2=` mt -f /dev/st1 status | tail -n 1 | cut -d" " -f4`

mt -f /dev/nst0 setblk 0

mt -f /dev/nst1 setblk 0

tape1=`lsscsi | grep /dev/st0 | cut -d" " -f9,11`

tape2=`lsscsi | grep /dev/st1 | cut -d" " -f9,11`

clear

PAU="\033[32m Presione enter para continuar... \033[0m"

verde="\033[32m"

rojo="\033[31m"

normal="\033[0m"

NOTAPE="$rojo La Unidad no esta lista $normal"

##########################################################################

while command

do

clear

#####################  MENU  1 ###########################################

echo "                           Escoja la opcion "

echo -e "$verde $tape1 $stat1 $normal---$verde $tape2 $stat2 $normal"

echo " ----------------------------------"

echo  "1. Utilizar $tape1"

echo  "2. Status $tape1"

echo  "3. Utilizar $tape2"

echo  "4. Status $tape2"

echo  "5. Salir"

echo ""

echo "Ctrl c cancelar"

echo -n -e "$rojo Seleccione una opcion [1 - 5] $normal"

#####################   MENU  1_A (ST0)  ##################################

#

#

read opcion

case $opcion in

#       1)      if [ "$stat1" = "ONLINE" ]

        1)         while command

                   do

                   clear

                        filenum=`mt -f /dev/nst0 status | grep File | cut -d"," -f1`

                        echo -e "    MENU $verde $tape1 $normal status: $verde $stat1 $normal Posicion: $verde $filenum $normal"

                        echo " ---------------------------------------------------------------------------------"

                        echo " 1. Recuperar cinta completa"

                        echo " 2. Recuperar por linea"

                        echo " 3. Recuperar linea actual"

                        echo " 4. Rebobinar "

                        echo " 5. Expulsar "

                        echo " ---------------------------------------------------------------------------------"

                        echo -e " 6.$verde Vovler $normal"

                        read opcion2

                        case $opcion2 in

                                #####################################################################################################

                                1)stat1=` mt -f /dev/st0 status | tail -n 1 | cut -d" " -f4`

                                                if [[ $stat1 == *ONLINE* ]]

                                                        then echo -n "Ingrese el numero de cinta: "

                                                        read ntape

                                                        echo -n "Ingrese cantidad de filas: "

                                                        read cont

                                                        mkdir /sgydata01/$ntape

                                                        cont1=1

                                                        while [ $cont1 -lt $cont ]

                                                                do

                                                                dd if=/dev/nst0 of=/sgydata01/$ntape/Tape$ntape-$cont1 bs=600000

                                                                let cont1=cont1+1

                                                        done

                                                        mt -f /dev/nst0 rewind

                                                        mt -f /dev/nst0 eject


                                                fi

                                                        echo -e $NOTAPE $PAU;

                                                        read foo;;

                                ##################################################################################################

                                2) if [[ $stat1 == *ONLINE* ]]

                                        then echo -n "Ingrese numero de linea: "

                                                read nlinea

                                                mt -f /dev/nst0 rewind

                                                mt -f /dev/nst0 asf $nlinea

                                                dd if=/dev/nst0 of=/sgydata01/$nlinea.sgy bs=6000000

                                        fi

                                                echo -e $NOTAPE $PAU;

                                                                read foo;;

                                ##################################################################################################

                                3) if [[ $stat2 == *ONLINE* ]]

                                                then dd if=/dev/nst0 of=/sgydata01/$filenum bs=6000000

                                   fi

                                                echo -e $NOTAPE $PAU

                                                read foo;;

                                ##################################################################################################

                                4)              mt -f /dev/nst0 rewind

                                                echo -e $NOTAPE $PAU

                                                read foo;;

                                ##################################################################################################

                                5)

                                                mt -f /dev/nst0 eject

                                                echo -e $NOTAPE $PAU

                                                read foo;;

                                ##################################################################################################

                                6) break;;

                                esac

                                done;;

##################################################################################################################################

        2) mt -f /dev/nst0 status

           echo -e $PAU ;

                read foo;;

#################################  MENU 1_B (ST1)   ##############################################

        3) while command

                   do

                   clear

                        filenum=`mt -f /dev/nst1 status | grep File | cut -d"," -f1`

                        stat2=` mt -f /dev/st1 status | tail -n 1 | cut -d" " -f4`

                        echo -e "    MENU $verde $tape2 $normal status: $verde $stat2 $normal Posicion: $verde $filenum $normal"

                        echo " ---------------------------------------------------------------------------------"

                        echo " 1. Recuperar cinta completa"

                        echo " 2. Recuperar por linea"

                        echo " 3. Recuperar linea actual"

                        echo " 4. Rebobinar "

                        echo " 5. Expulsar "

                        echo " ---------------------------------------------------------------------------------"

                        echo -e " 6.$verde Vovler $normal"

                        read opcion3

                        case $opcion3 in

                                ##################################################################################################

                                1)stat2=` mt -f /dev/st1 status | tail -n 1 | cut -d" " -f4`

                                                if [[ $stat2 == *ONLINE* ]]

                                                        then echo -n "Ingrese el numero de cinta: "

                                                        read ntape

                                                        echo -n "Ingrese el numero de filas: "

                                                        read cont

                                                        mkdir /sgydata01/$ntape

                                                        cont1=1

                                                        while [ $cont1 -lt $cont ]

                                                                do

                                                                dd if=/dev/nst1 of=/sgydata01/$ntape/Tape$ntape-$cont1 bs=6000000

                                                                let cont1=cont1+1

                                                        done

                                                        mt -f /dev/nst1 rewind

                                                        mt -f /dev/nst1 eject


                                                fi

                                                echo -e $NOTAPE $PAU

                                                read foo;;


                                #####################################################################################################

                                2)              if [[ $stat2 == *ONLINE* ]]

                                                        then echo -n "Ingrese numero de linea: "

                                                        read nlinea

                                                        mt -f /dev/nst1 rewind

                                                        mt -f /dev/nst1 asf $nlinea

                                                        dd if=/dev/nst1 of=/sgydata01/$nlinea.sgy bs=6000000

                                                fi

                                        echo -e $NOTAPE $PAU

                                                read foo;;

                                ######################################################################################################

                                3) if [[ $stat2 == *ONLINE* ]]

                                                then dd if=/dev/nst1 of=/sgydata01/$filenum bs=6000000

                                   fi

                                        echo -e $NOTAPE $PAU

                                                read foo;;

                                #####################################################################################################

                                4) if [[ $stat2 == *ONLINE* ]]

                                        then mt -f /dev/nst1 rewind

                                   fi

                                        echo -e $NOTAPE $PAU

                                                read foo;;

                                #####################################################################################################

                                5) if [[ $stat2 == *ONLINE* ]]

                                        then mt -f /dev/nst1 eject

                                   fi

                                        echo -e $NOTAPE $PAU

                                                read foo;;

                                #####################################################################################################

                                6) break;;

                                esac

                                done;;

######################################################################################################################################

        4) mt -f /dev/nst1 status

           echo -e  $PAU;

                read foo;;

        5) exit 1;;

esac

done

---------------------------------------------------------------------------------------------------------------------------------------------------------