backup diferencial remoto

Publicado por Fábio de Souza (última atualização em 29/12/2011)

[ Hits: 6.388 ]

Homepage: www.quebec-linux.blogspot.com.br

Download becape.sh




Olá, fiz essa backup para meu superior, trata-se de um backup da maquina local para um remoto através de ssh c/ chave publica.

Ele faz o backup completo na segunda e na sexta, no restante dos dias ele faz um diferencial.

Para usá-lo é só modificar algumas variáveis como IP de Destino, diretório local e diretório remoto, colocá-lo no CRON ou rodá-lo manualmente mesmo.

Espero que seja útil.

  



Esconder código-fonte

#!/bin/bash

#ATENCAO: LEIA OS ITENS ABAIXOS E TODOS COMENTÁRIOS PARA PODER ENTENDER COMO É FEITO O BACKUP!
#Becape Full de Segunda e Sexta-feira c/ Diferencial na Terça, Quarta e Quinta.
#Para conectar no servidor deve-se utilizar a chave publica do admin desta maquina, só assim será possível mover o backup para o destino remoto.
#incluí-lo no cron ou rodá-lo manualmente todos dias da semana.

#Dia em números para entrada do case e escrita de log (Nao mudar!)
DIA="$(date '+%w')"


#Diretorio do programa Becape
BCPHOME="/root/becape"

#Email do admin
MAILTO="admin-backup@exemplo.com.br"

#Diretorio a ser "backupeado"
SRC="/home"

#IP de destino (scp/ssh)
IPDEST="192.168.1.3"

#Diretorio de destino onde sera movido o backup
DSTDIR="/root/becape"

#Script p/ fazer backup full
FULL="tar -cvf $BCPHOME/becape-full.tar $SRC"



bkp() {
case $DIA in
        1 )echo -e "\nBecape Executado: `date`\n" ; $FULL ; scp $BCPHOME/becape-full.tar $IPDEST:$DSTDIR/segundaa/ ;;

        2 )echo -e "\nBecape Executado: `date`\n" ; find $SRC -type f -newer $BCPHOME/becape-full.tar -exec cp -v {} $BCPHOME/tercaa/ \; ; scp $BCPHOME/tercaa/* $IPDEST:$DSTDIR/tercaa/ ;;

        3 )echo -e "\nBecape Executado: `date`\n" ; find $SRC -type f -newer $BCPHOME/becape-full.tar -exec cp -v {} $BCPHOME/quartaa/ \; ; scp $BCPHOME/quartaa/* $IPDEST:$DSTDIR/quartaa/ ;;

        4 )echo -e "\nBecape Executado: `date`\n" ; find $SRC -type f -newer $BCPHOME/becape-full.tar -exec cp -v {} $BCPHOME/quintaa/ \; ; scp $BCPHOME/quintaa/* $IPDEST:$DSTDIR/quintaa/ ;;

        5 )echo -e "\nBecape Executado: `date`\n" ; $FULL ; scp $BCPHOME/becape-full.tar $IPDEST:$DSTDIR/sextaa/ ;;

        *) mail -s "becape.sh: provavel erro na data do sistema" $MAILTO ;;
esac
}

dir () {
#Verifica se existe diretorio do programa becape e o cria.
test -d $BCPHOME || mkdir $BCPHOME || echo -e "\nImpossivel criar diretorio local $BCPHOME!\n"
test -d $BCPHOME/segundaa || mkdir $BCPHOME/segundaa || echo -e "\nImpossivel criar diretorio local $BCPHOME/segundaa!\n"
test -d $BCPHOME/tercaa || mkdir $BCPHOME/tercaa || echo -e "\nImpossivel criar diretorio local $BCPHOME/tercaa!\n"
test -d $BCPHOME/quartaa || mkdir $BCPHOME/quartaa || echo -e "\nImpossivel criar diretorio local $BCPHOME/quartaa!\n"
test -d $BCPHOME/quintaa || mkdir $BCPHOME/quintaa || echo -e "\nImpossivel criar diretorio local $BCPHOME/quintaa!\n"
test -d $BCPHOME/sextaa || mkdir $BCPHOME/sextaa || echo -e "\nImpossivel criar diretorio local $BCPHOME/sextaa!\n"
test -d $BCPHOME/log || mkdir $BCPHOME/log || echo -e "\nImpossivel criar diretorio local $BCPHOME/log!\n"

#Verifica se existe diretorios remotos para armazenar os backups e o cria.
ssh $IPDEST test -d $DSTDIR || ssh $IPDEST mkdir $DSTDIR || echo -e "\nImpossivel criar diretorio remoto $DSTDIR!\n"
ssh $IPDEST test -d $DSTDIR/segundaa || ssh $IPDEST mkdir $DSTDIR/segundaa || echo -e "\nImpossivel criar diretorio remoto $DSTDIR/segundaa!\n"
ssh $IPDEST test -d $DSTDIR/tercaa || ssh $IPDEST mkdir $DSTDIR/tercaa || echo -e "\nImpossivel criar diretorio remoto $DSTDIR/tercaa!\n"
ssh $IPDEST test -d $DSTDIR/quartaa || ssh $IPDEST mkdir $DSTDIR/quartaa || echo -e "\nImpossivel criar diretorio remoto $DSTDIR/quartaa!\n"
ssh $IPDEST test -d $DSTDIR/quintaa || ssh $IPDEST mkdir $DSTDIR/quintaa || echo -e "\nImpossivel criar diretorio remoto $DSTDIR/quintaa!\n"
ssh $IPDEST test -d $DSTDIR/sextaa || ssh $IPDEST mkdir $DSTDIR/sextaa || echo -e "\nImpossivel criar diretorio remoto $DSTDIR/sextaa!\n"
}


#executa funcao dir com as saidas de erro em arquivo de log
dir 2>> $BCPHOME/log/$DIA.becape.err.log

#executa funcao com as saidas, normal e de erro, em seus respectivos arquivos de log
bkp > $BCPHOME/log/$DIA.becape.log 2> $BCPHOME/log/$DIA.becape.err.log

echo -e ".\n...Backup finalizado, verifique os logs para confirmar o sucesso em:\t $BCPHOME/log/$DIA.becape.err.log\n"

W=0
while [ $W == 0 ]
do
echo ""
read -n 1 -p "Deseja deletar o backup temporario deixados neste host? s(recomendável) ou n" SN
        case $SN in
                s ) echo "" ; rm -rfv /root/becape/*aa/ ; W=1 ;;
      n ) echo -e "\narquivos de backup mantidos em "$BCPHOME/..."" ; W=1;;
                ? ) echo -e "\ndesculpe, utilize s ou n, somente!"; W=0 ;;
        esac
done

#Se quiser enviar o resultado descomente esta opção.
mail -s "becape.sh results!" -a $BCPHOME/log/$DIA.becape.log -a $BCPHOME/log/$DIA.becape.err.log $MAILTO << /dev/null 

Scripts recomendados

Limpando pacotes desnecessários com apt-get

Cálculo da raiz quadrada

Removendo arquivos antigos

Script Simples para informações do Sistema

Páscoa - Festas Móveis


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts