terça-feira, 26 de janeiro de 2010

Script de Backup - Ontape

Abaixo estou postando um script de backup funcional do Ontape do nivel 0, 1 e 2

Algumas considerações para o funcionamento do script:

  1. Ter um NFS Server ativo, e com local para o armazenamento dos backups;
  2.  Alterar o script com os diretorios de sua realidade;
  3. Montar o crontab adequadamente para que execute nos horarios apropriados; 
  4. Servidor DNS configurado apropriadamente
##!/bin/sh
## Amilcar de Jesus Moreti
## ajmoreti@yahoo.com.br
##
## /usr/local/bin/Archive.sh
##
## Script de Backup {Level 0, Level 1 e Level 2} e Logical Logs
##
## Data Criacao = 07/10/2009 - Data Modificacao = 07/10/2009
##
## Versao = 1   -       Release = 01
## Variaveis Informix
INFORMIXDIR=/usr/informix
DBCENTURY=C
INFORMIXSERVER=prd
ONCONFIG=onconfig.prd
DBDATE=dmy4/
DBMONEY=,
LD_LIBRARY_PATH=$INFORMIXDIR/lib:$INFORMIXDIR/lib/esql
export INFORMIXDIR DBCENTURY INFORMIXSERVER ONCONFIG DBDATE DBMONEY LD_LIBRARY_PATH
## Variaveis de Sistemas
Null=/dev/null
PATH=$INFORMIXDIR/bin:$PATH
HourBkp=`date +%H%M`DirOnt=/ontapeDirOntRem="isis:$DirOnt"dirArc=$DirOnt/archiveDirdirLog=$DirOnt/logicalLogs
dirNot=$DirOnt/Nocturne
dirDiu=$DirOnt/daily
##----------------------------------------------------------------------------------
# Funcao NFS
fnMountNFS ()
{
        sudo mount -t nfs $OntRem $DirOnt
}

fnUmountNFS ()
{
        sudo umount $DirOnt
}

# Funcao para criacao dos diretorios
fnMake_dirArc ()
{
        mkdir $dirArc
        chmod 777 $dirArc
}

fnMake_dirLog ()
{
        mkdir $dirLog
        chmod 777 $dirLog
}


# Verifica se a NFS esta montada.
df |grep $OntRem > /dev/null 2> /dev/null
Ver=$?
while [ $Ver != 0 ]
do
        fnMountNFS
        Ver=$?
done
cd $HOME

# Verifica se  o diretorios existem e se possuem permissoes adequadas.
if [ ! -d $dirArc ]
then
        fnMake_dirArc
else
        if test ! -r $dirArc -a ! -w $dirArc -a ! -x $dirArc
        then
                chmod 777 $dirArc
        fi
fi
if [ ! -d $dirLog ]
then
        fnMake_dirLog
else
        if test ! -r $dirLog -a ! -w $dirLog -a ! -x $dirLog
        then
                chmod 777 $dirLog
        fi
fi
if [ ! -d $dirNot ]
then
        mkdir $dirNot
        mkdir $dirNot/`date +%a`
else
        if [ ! -d $dirNot/`date +%a` ]
        then
                mkdir $dirNot/`date +%a`
        fi
fi

####################################
hostName="vishnu"
serverNum="5"
Ln="L0"
if [ $HourBkp -eq 2315 ]
then
        if [ -f $dirNot/`date +%a`/$hostName\_$serverNum\_$Ln ]
        then
                rm $dirNot/`date +%a`/$hostName\_$serverNum\_$Ln
                rm $dirNot/`date +%a`/Logs*.tar
        fi

        echo -e "Efetuando Backup Nivel 0"
        ontape -s -L 0 -d
        VerStatus=$?
        if [ $VerStatus -eq 0 ]
        then
                echo "Backup Nivel 0 - Efetuado com Sucesso"
                echo -e "Copiando o Archive para o diretorio Correto"
                mv $dirArc/$hostName\_$serverNum\_$Ln $dirNot/`date +%a`
                VerStatus=$?
                if [ $VerStatus -eq 0 ]
                then
                        echo -e "Copia do Archive efetuada com Sucesso"
                        echo -e "targear arquivos de logs."
                        numIni=`ls -t $dirLog | awk -F"_" '{print $3}' | tail -1 | tail -c5`
                        numEnd=`ls $dirLog | awk -F"_" '{print $3}' | tail -1 | tail -c5`
                        tar cvpPf $dirNot/`date +%a`/Logs\_$numIni\_$numEnd.tar --remove-files $dirLog/*
                else
                        echo -e "Ocorreu Problema com a Copia do Archive - Verificar"
                fi
                oncheck -pr |egrep -w "Archive Level                  0" -A 5 > $dirNot/`date +%a`/Oncheck_Log_0.log
        else
                echo "Ocorreu Erro - Verificar o Problema"
        fi
elif [ $HourBkp -eq 1315 ]
then
        if [ ! -d $dirDiu ]
        then
                mkdir $dirDiu
                mkdir $dirDiu/`date +%a`
        else
                if [ ! -d $dirDiu/`date +%a` ]
                then
                        mkdir $dirDiu/`date +%a`
                fi
        fi

        Ln="L1"
        if [ -f $dirDiu/`date +%a`/$hostName\_$serverNum\_$Ln ]
        then
                rm $dirDiu/`date +%a`/$hostName\_$serverNum\_$Ln
                rm $dirDiu/`date +%a`/Logs*.tar
        fi

        echo -e "Efetuando Backup Nivel 1"
        ontape -s -L 1 -d
        VerStatus=$?
        if [ $VerStatus -eq 0 ]
        then
                echo "Backup Nivel 1 - Efetuado com Sucesso"
                echo -e "Copiando o Archive para o diretorio Correto"
                mv $dirArc/$hostName\_$serverNum\_$Ln $dirDiu/`date +%a`/
                VerStatus=$?
                if [ $VerStatus -eq 0 ]
                then
                        echo -e "Copia do Archive efetuada com Sucesso"
                        numIni=`ls -t $dirLog | awk -F"_" '{print $3}' | tail -1 | tail -c5`
                        numEnd=`ls $dirLog | awk -F"_" '{print $3}' | tail -1 | tail -c5`
                        tar cvpPf $dirDiu/`date +%a`/Logs\_$numIni\_$numEnd.tar --remove-files $dirLog/*
                else
                        echo -e "Ocorreu Problema com a Copia do Archive - Verificar"
                fi
                oncheck -pr |egrep -w "Archive Level                  1" -A 5 > $dirDiu/`date +%a`/Oncheck_Log_1.log
 else
                echo "Ocorreu Erro - Verificar o Problema"
        fi

elif [ $HourBkp -eq 1815 ]
then
        if [ ! -d $dirDiu ]
        then
                mkdir $dirDiu
                mkdir $dirDiu/`date +%a`
        else
                if [ ! -d $dirDiu/`date +%a` ]
                then
                        mkdir $dirDiu/`date +%a`
                fi
        fi

        Ln="L2"
        if [ -f $dirDiu/`date +%a`/$hostName\_$serverNum\_$Ln ]
        then
                rm $dirDiu/`date +%a`/$hostName\_$serverNum\_$Ln
                rm $dirDiu/`date +%a`/Logs*.tar
        fi

        echo -e "Efetuando Backup Nivel 2"
        ontape -s -L 2 -d
        VerStatus=$?
        if [ $VerStatus -eq 0 ]
        then
                echo "Backup Nivel 2 - Efetuado com Sucesso"
                echo -e "Copiando o Archive para o diretorio Correto"
                mv $dirArc/$hostName\_$serverNum\_$Ln $dirDiu/`date +%a`/
                VerStatus=$?
                    if [ $VerStatus -eq 0 ]
                then
                        echo -e "Copia do Archive efetuada com Sucesso"
                        numIni=`ls -t $dirLog | awk -F"_" '{print $3}' | tail -1 | tail -c5`
                        numEnd=`ls $dirLog | awk -F"_" '{print $3}' | tail -1 | tail -c5`
                        tar cvpPf $dirDiu/`date +%a`/Logs\_$numIni\_$numEnd.tar --remove-files $dirLog/*
                else
                        echo -e "Ocorreu Problema com a Copia do Archive - Verificar"
                fi
                oncheck -pr |egrep -w "Archive Level                  2" -A 5 > $dirDiu/`date +%a`/Oncheck_Log_2.log
        else
                echo "Ocorreu Erro - Verificar o Problema"
        fi
else
        contLog=`onstat -l | grep U------ | awk '{print $3}' | wc -l`

        if [ $contLog -ge 1 ]
        then
                ontape -a -d
        fi
fi

Nenhum comentário:

Postar um comentário