Kit de scripts para backup (Full + Diferencial + Samba + Rede)

Esse kit de scripts foi desenvolvido para realizar backup full e diferencial, via rede. Está operacional e em constante modificação. Ajuste conforme a sua necessidade. Para criar um servidor Samba, utilize os ótimos artigos encontrados no VOL.

[ Hits: 52.067 ]

Por: Perfil removido em 12/11/2011


Backup Diferencial



O script "backup_diferencial.sh" segue a estrutura:

1 - Chama e roda o script para montar as unidades "montar_unidades.sh";

2 - Realiza o backup com base no último full;

3 - Chama e roda o script de compactação, apos desmonta as unidades, através do script de "desmontar_unid.sh";

4 - Cria os logs.


#!/bin/bash
# Maicon Souza 
# data: 22-09-11

echo "Programa de Backup Diferencial"

IFS=: # separadores

lendoidbackup(){
# Importante::::: se houver mais de uma ID, altere os trechos "${nomebackup[0]}", para "${nomebackup[$cont]}" 

# nome do backup
nomebackup=(" ")
cont=0
while read linha; do
nomebackup[$cont]=$linha
let cont++
done < ./config/id_backup.txt
}

cbackup(){
# chama e roda o script de compactacao de backup
chmod +x ./compactar_backup.sh
./compactar_backup.sh
}

montaunids(){
# chama e roda o script para montar as unidades
chmod +x ./montar_unidades.sh
./montar_unidades.sh
}

echo " "

recebeinfbackup(){
# origem dos dados
receborig=(" ")
cont=0
while read linha; do
receborig[$cont]=/media/bkporig-${nomebackup[0]}-$cont
let cont++
done < ./config/lista_orig_backup.log
}

dadosdif() {
# diretorio de destino do backup
DSTDIR=/media/bkpdest/${nomebackup[0]}

DATA=`date +%x-%k%M%S`
# +xx busca arquivos criados existentes a xx minutos (arquivos que tenham mais de xx minutos)
# -xx arquivos que tenham sido criados nos ultimos xx minutos
TIME_FIND=-400 
# horas = 400 minutos
TIME_DEL=+7 # dias em que permanecera o backup diferencial armazenado
# data de inicio backup
DATAIN=`date +%c`
echo " Data de inicio: $DATAIN"

# criar o arquivo dif-data.tar no diretorio de destino
ARQ=(" ")
cont2=0
while read linha; do
ARQ[$cont2]=$DSTDIR/dif-$cont2-$DATA.tar
let cont2++ 
done < ./config/lista_orig_backup.log
}

backupdif(){
cont3=0
while read linha; do
sync
find ${receborig[$cont3]} -type f -cmin $TIME_FIND -exec tar -rvf ${ARQ[$cont3]} {} ";"
let cont3++
done < ./config/lista_orig_backup.log

if [ $? -eq 0 ] ; then
echo "--------------------------------------"
echo "Backup Diferencial concluido com sucesso"
DATAFIN=`date +%c`
echo "Data de termino: $DATAFIN"
echo "Backup realizado com sucesso" >> ./log/backup_diferencial.log
echo "Criado pelo usuario: $USER" >> ./log/backup_diferencial.log
echo "INICIO: $DATAIN" >> ./log/backup_diferencial.log
echo "FIM: $DATAFIN" >> ./log/backup_diferencial.log
echo "------------------------------------------------" >> ./log/backup_diferencial.log
echo " "
echo "Log gerado em ./log/backup_diferencial.log"
else
echo "ERRO! Backup Diferencial $DATAIN" >> ./log/backup_diferencial.log
fi 
}

procuraedestroidif(){
#apagando arquivos mais antigos (a 7 dias que existe (-cmin +2)
find $DSTDIR -name "dif*" -ctime $TIME_DEL -exec rm -f {} ";"
if [ $? -eq 0 ] ; then
echo "Arquivo de backup mais antigo eliminado com sucesso!"
else
echo "Erro durante a busca e destruicao do backup antigo!"
fi
}

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

echo " "

clear

echo " "
echo "<----------------------->"
echo "| BACKUP DIFERENCIAL |"
echo "<----------------------->"
echo " "
echo " "
echo " "
echo " "
echo "<--------------------------------------------------------------------------->"
echo "| Sera realizado o backup diferencial, usando como base o ultimo backup ! |"
echo "<--------------------------------------------------------------------------->"

lendoidbackup
montaunids 
recebeinfbackup
dadosdif
backupdif
cbackup
procuraedestroidif

exit 0

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Backup Full
   3. Backup Diferencial
   4. Montar Unidades
   5. Desmontar Unidades
   6. Compactação
   7. Restore
   8. Regras
   9. Referências e Conclusão
Outros artigos deste autor

Incrementando as funções do KDE com "servicemenus"

Linux x Windows - O paradoxo da atualização

Uma geral pela configuração pós-instalação do Slackware

Recuperando senhas de e-mails esquecidas usadas no Claws-Mail

FwLogWatch - Analisando Registros do IPtables

Leitura recomendada

cal2svg - brincando com shell script e arquivos vetoriais SVG

GNU Parallel: criando atividades em paralelo com shell script

Backup automatizado com HD externo

Receba seu IP externo via e-mail ou ensine o bash a ler e enviar e-mails

Ubuntu 14.04 no AD com CiD

  
Comentários
[1] Comentário enviado por removido em 12/11/2011 - 16:20h

Muito bom maicon !

[2] Comentário enviado por teccert em 12/11/2011 - 17:26h

Normalmente se cobra muito para ensinar tarefas como esta, mas ainda bem que o Linux serve para todos, inclusive para os mais pobres e menos experiente, pois os mais iluminados não guardam nem negociam o conhecimento que adquiriu, pelo contrário, transmite-o gratuitamente e de forma simples, porém completa.

Contudo também é válido cobrar, ou pedir colaboração financeira dos que podem pagar ou contribuir.

Viva a Comunidade Linux!
Viva ao Maicon Souza por este belo tutorial!

[3] Comentário enviado por removido em 12/11/2011 - 18:56h

Obrigado !
Em um 1º momento, o kit pode parecer complicado ou até mesmo inoperante.
Mas alterando alguns parâmetros, certamente será de grande utilidade a todos.
---------------------------------------------------------------------------------->
No texto, ficou confuso o trecho: "Informar o destino (informe apenas um destino)".
Então entenda:
"** Ao informar o destino, informe apenas um endereço, ex:
//192.168.2.3/f$/Meu_backup"
---------------------------------------------------------------------------------->
Quem quiser algum esclarecimento ou o kit compactado, meu e-mail é:
staley.kirk@gmail.com

[4] Comentário enviado por removido em 15/11/2011 - 19:09h

Estou otimizando este kit, quando possivel postarei o resultado !

[5] Comentário enviado por xirux em 13/12/2011 - 09:34h

Impressionante o que o GNU/Linux faz com a cabeça da gente...o Maicon compartilhou conhecimento extremamente técnico e funcional, assim como centenas de pessoas aqui no VOL, de maneira que uma Micosoft nunca pensou que seria possível. Isso se chama humanização da informática, quem ganha é a nação. Eu troquei até de profissão (enfermagem - informática) seguindo o GNU/Linux. Só posso ficar cada vez mais orgulhoso de ter amigos como vcs. Fiquem na paz!


Contribuir com comentário