luizcarlos18rj
(usa Suse)
Enviado em 07/01/2015 - 15:12h
Oi galera...
Uma dúvida por favor:
Tenho um script que copia pastas "chaves" de 3 servidores que estão na rede para um servidor de backup diariamente e no final gera log com estatísticas da capacidade do server de backup para futuros backups.
Basicamente ele segue o seguinte padrão:
1 - Copia arquivos do server 1 para o HD do server de backup
2 - Copia arquivos do server 2 para o HD do server de backup
3 - Copia arquivos do server 3 para o HD do server de backup
4 - Gera um log com informações do tipo:
- Tamanho total do backup
- Capacidade total do server de backup
- Uso do disco
- Previsão de quantos backups ainda podem ser feitos baseados no tamanho atual da pasta de backup.
O problema é que as vezes ( por problema de hardware de um dos servidores, que será subsistido em breve ) ele inicia a cópia do server 1, do server 2, mas quando chega no server 3 ( este que as vezes "trava" e tem q ser reiniciado ), o script não executa o 4 passo que seria o log de estatísticas, eu gostaria de "pular" essa parte quando por ventura o servidor travar e saltar para as estatística a partir de até onde foi feito, inclusive com uma mensagem de que o não foi possível copiar dados daquele server ( que travou ).
Alguém pode me ajudar?
Desde já agradeço....
Luiz Carlos.
Obs.: segue abaixo o script.
<pre>
-----------------------
########## DECLARAÇÃO DE VARIÁVEIS #############
pasta=bkp$(date +%d%m%y)
notes=bkpNotes$(date +%d%m%y)
redeadm=bkpRedeAdm$(date +%d%m%y)
web=bkpWeb$(date +%d%m%y)
########## DECLARAÇÃO DE FUNÇÕES #############
calcula_becapes_before(){
#
uso=`df -h | grep backup-bkpservidores | awk '{ print $5}' | cut -d'%' -f1`
pasta_excluir=`ls -1ltr | grep -m 1 bkp | awk '{ print $NF}'`
#
if [ $uso -ge 91 ]; then
echo "-----------------------------------------------" >> /root/backup/controle.txt
echo "DISCO CHEIO!!! Excluindo o becape mais antigo." >> /root/backup/controle.txt
rm -rf $pasta_excluir
echo "Diretório excluido: $pasta_excluir" >> /root/backup/controle.txt
echo "-----------------------------------------------" >> /root/backup/controle.txt
fi
#
}
#
calcula_becapes_after(){
#
tamanho_disco_H=` df -h | grep backup-bkpservidores | awk '{ print $2}'`
tamanho_disco=`df -m | grep backup-bkpservidores | awk '{ print $2}'`
tamanho_disco_aprox=$(echo "($tamanho_disco*1024)" | bc)
#
tamanho_pasta_H=`du -hs $pasta| cut -f1`
tamanho_pasta=`du -ms $pasta| cut -f1`
#
becapes_possiveis=$(echo "(($tamanho_disco)/$tamanho_pasta)-1" | bc)
#
pasta_excluir=`ls -1ltr | grep -m 1 bkp | awk '{ print $NF}'`
#
uso_H=`df -h | grep backup-bkpservidores | awk '{ print $5}'`
uso=`df -h | grep backup-bkpservidores | awk '{ print $5}' | cut -d'%' -f1`
#
usado_H=`df -h | grep backup-bkpservidores | awk '{ print $3}'`
#
livre_H=`df -h | grep backup-bkpservidores | awk '{ print $4}'`
livre=`df -m | grep backup-bkpservidores | awk '{ print $4}'`
#
qtdbecapes=$(echo "$livre/$tamanho_pasta" | bc)
#
if [ $qtdbecapes -eq 0 ]; then
echo "-----------------------------------------------" >> /root/backup/controle.txt
echo "DISCO CHEIO!!! Excluindo o becape mais antigo." >> /root/backup/controle.txt
rm -rf $pasta_excluir
echo "Diretório excluido: $pasta_excluir" >> /root/backup/controle.txt
echo "-----------------------------------------------" >> /root/backup/controle.txt
fi
#
##### Releitura de variáveis caso haja liberação de espaço ######
#
uso_H2=`df -h | grep backup-bkpservidores | awk '{ print $5}'`
usado_H2=`df -h | grep backup-bkpservidores | awk '{ print $3}'`
livre_H2=`df -h | grep backup-bkpservidores | awk '{ print $4}'`
livre2=`df -m | grep backup-bkpservidores | awk '{ print $4}'`
qtdbecapes2=$(echo "$livre2/$tamanho_pasta" | bc)
}
########## INÍCIO #############
cd /root/backup
mkdir $pasta
cd $pasta
mkdir $notes
mkdir $redeadm
mkdir $web
cd /root/backup
echo " " >> /root/backup/controle.txt
data_titulo=$(date +%d/%m/%y)
echo "*******************************************************" >> /root/backup/controle.txt
echo "******* | PROCESSO DE BACKUP DOS SERVIDORES | *******" >> /root/backup/controle.txt
echo "******* | $data_titulo | *******" >> /root/backup/controle.txt
echo "*******************************************************" >> /root/backup/controle.txt
echo " " >> /root/backup/controle.txt
echo "Início da criação de pasta de backup às: " >> /root/backup/controle.txt
date >> /root/backup/controle.txt
#
calcula_becapes_before
#
scp -r root@10.3.48.2:/local/notesdata /root/backup/$pasta/$notes
scp -r root@10.3.48.13:/home/VOL01 /root/backup/$pasta/$redeadm
scp -r root@10.3.48.13:/home/VOL02 /root/backup/$pasta/$redeadm
scp -r root@10.3.48.13:/home/VOL03 /root/backup/$pasta/$redeadm
scp -r root@10.3.48.3:/srv /root/backup/$pasta/$web
scp -r root@10.3.48.3:/var/lib/mysql /root/backup/$pasta/$web
echo "::::::::::::::::::::::::::::::::::::: " >> /root/backup/controle.txt
echo "Término da criação de pasta de backup às: " >> /root/backup/controle.txt
date >> /root/backup/controle.txt
echo " " >> /root/backup/controle.txt
#
calcula_becapes_after
#
echo "Tamanho total do Volume: $tamanho_disco_H (Aprox $tamanho_disco_aprox GB)" >> /root/backup/controle.txt
echo "Tamanho total do becape atual: $tamanho_pasta_H" >> /root/backup/controle.txt
echo "Capacidade Total de becape(s)do Volume: $becapes_possiveis" >> /root/backup/controle.txt
echo "Espaço ocupado em Disco: $usado_H2($uso_H2)" >> /root/backup/controle.txt
echo "Espaço Livre: $livre_H2" >> /root/backup/controle.txt
echo "Quantidade possível de becapes restantes: $qtdbecapes2 " >> /root/backup/controle.txt
echo "(Cálculo em função do tamanho atual da pasta de becape)" >> /root/backup/controle.txt
echo "--------------------------------------------------------" >> /root/backup/controle.txt
#Fim
</pre>