Backup de Diretórios
Publicado por Danilo Josino 14/05/2009
[ Hits: 8.375 ]
Homepage: http://djosino.blogspot.com.br
Este script basicamente checa dias da semana, semana do mês, gera backup, envia ao servidor, checa integridade, envia email de confirmação se tudo tiver dado certo e remove arquivos temporários.
Usei de comandos básicos para implementar o script e espero estar contribuindo. No passo a passo tentei explicar a lógica.
Para implementação é necessária instalacao dos pacotes:
-Mailx ( Enviar mail )
-Sharutils ( Anexos )
-e um SMTP
Obs: Já havia postado mas houve alguma falha.
#! /bin/bash #### ## ## ## ## ## ## ## ## ## ## ## ## ## ## #### ### ### ### Script Backup ### ### ### ### Data de criacao : 04 / 11 / 2008 ### ### Desenvolvido por: Danilo V Josino ### ### ### #### ## ## ## ## ## ## ## ## ## ## ## ## ## ## #### # # ## Programas Utilizados ## ### ### #### Mailx ( Enviar mail ) #### ##### Sharutils ( Anexos ) ##### ###### ###### ###################################### ######## Variaveis Auxiliares ######### i='1' # Variavel do laco While - Main j='0' # Variavel do laco elif - Integridade k=1 # Variavel do laco if - Integridade e Envio user='USUARIO' # Define usuario para ssh var='var' ######### home='home' # # # # # Define pastas usadas etc='etc' ######### md5_l='' # Armazena chave local e compara a remota md5_r='' # Armazena chave remota e compara a local ########## Variaveis Diretorio ########## hostname=$(hostname) # Nome do host backupdir='/Backup/arquivos' # Pasta local onde seram gerados arquivos temporarios remotedir='/Backup0'$(cat $backupdir/../cont.txt) # Pasta remota ( definida pela semana do mes ) diretorio=$home # Primeiro diretorio a se realizar o Backup ipremote='10.0.0.1' # Ip do servidor que vai receber o Backup ############ Variaveis Data ############ dia=`date +%w` # Dia da semana hora=`date +%R` # Hora date=`date +_%d-%m-%y` # Data sem=$(cat $backupdir/../cont.txt ) # Define a semana do mes ###################### ###################### #################### # Funcoes ####################### ################## ######################## function Email() { if [ $k = 5 ]; then # MENSAGEM DE ERRO AO EMAIL mail -s '##### Backup de '$hostname' - '$direorio' - FAIL - #####' 'RECEBE@EMAIL.COM.BR' -a '' -a '####### Backup de '$diretorio' nao realizado #######' -a '' -a '' -a '' -a 'Data : '$hora' - '`date +%d/%m/%y` -a '' -a '' -a '' mail -s '##### Backup de '$hostname' - '$direorio' - FAIL - #####' 'RECEBE@EMAIL.COM.BR' -a '' -a '####### Backup de '$diretorio' nao realizado #######' -a '' -a '' -a '' -a 'Data : '$hora' - '`date +%d/%m/%y` -a '' -a '' -a '' else # BACKUP REALIZADO COM SUCESSO # Anexa arquivos que seram enviados ao email tar -jcvf $backupdir/arquivos_anexados_$diretorio.tar.bz2 $backupdir/$diretorio'-md5_local.txt' $backupdir/$diretorio'-md5_remote.txt' $backupdir/'arquivos_'$diretorio'.txt' # mail para danilo.josino uuencode /$backupdir/arquivos_anexados_$diretorio.tar.bz2 arquivos_anexados_$diretorio.tar.bz2 | mail -s '~~~~~~~ Backup de '$hostname' - '$diretorio' ~~~~~~~' 'RECEBE@EMAIL.COM.BR' -a '' -a '####### Backup de '$diretorio' realizado com sucesso #######' -a '' -a '' -a '' -a 'Data : '$hora' - '`date +%d/%m/%y` -a '' -a 'Arquivos anexados :' -a ' '$diretorio'-md5_local.txt' -a ' '$diretorio'-md5_remote.txt' -a ' arquivos_'$diretorio'.txt' -a '' # mail para magno.abreu uuencode /$backupdir/arquivos_anexados_$diretorio.tar.bz2 arquivos_anexados_$diretorio.tar.bz2 | mail -s '~~~~~~~ Backup de '$hostname' - '$diretorio' ~~~~~~~' 'RECEBE@EMAIL.COM.BR' -a '' -a '####### Backup de '$diretorio' realizado com sucesso #######' -a '' -a '' -a '' -a 'Data : '$hora' - '`date +%d/%m/%y` -a '' -a 'Arquivos anexados :' -a ' '$diretorio'-md5_local.txt' -a ' '$diretorio'-md5_remote.txt' -a ' arquivos_'$diretorio'.txt' -a '' fi k=5 sleep 2 } function Integridade() { k=1 md5_l=$(cat $backupdir/$diretorio-md5_local.txt) # Armazena o valor da chave pelo md5sum ( arquivo local ) md5_r=$(cat $backupdir/$diretorio-md5_remote.txt) # Armazena o valor da chave pelo md5sum ( arquivo remoto ) while [ $k != 5 ]; do # Laco testa integridade dos dados no servidor 4x, se nao houver exito # envia email com MSG DE ERROR k=$(expr $k + 1) if [ $md5_l = $md5_r ]; then # Caso os dados sejam devidamente armazenados, envia email de confimacao j='1' k=1 Email else [ $k = 5 ] Email fi done } function Send() { echo '' echo '------------- Enviando Backup de ' $diretorio ' ao Servidor -------------' # Texto para acompanhamento do script sleep 3 # Envia Backup ao servidor scp $backupdir/$hostname-$diretorio$date.tar.bz2 $root@$ipremote:$remotedir # Gera a chave remota, que sera usada no teste de integridade ssh $user@$ipremote "md5sum -t $remotedir/$hostname-$diretorio$date.tar.bz2 " > $backupdir/$diretorio-md5_remote-preview.txt cut -d " " -f1 $backupdir/$diretorio-md5_remote-preview.txt > $backupdir/$diretorio-md5_remote.txt rm -rf $backupdir/$diretorio-md5_remote-preview.txt } function Backup() { if [ -e $backupdir ]; then # Se o diretorio existir, inicia-se o backup echo "Iniciando Backup de " $diretorio sleep 3 else # Senao cria-se o diretorio e inicia o backup echo "Criando pasta para Backup de "$diretorio mkdir $backupdir sleep fi if [ i != '4' ];then # Gera a chave local, que sera usada no teste de integridade tar -jcvf $backupdir/$hostname-$diretorio$date.tar.bz2 '/'$diretorio'/' md5sum -t $backupdir/$hostname-$diretorio$date.tar.bz2 | cut -d " " -f1 > $backupdir/$diretorio-md5_local.txt du -alhc /$diretorio > $backupdir/arquivos_$diretorio.txt fi # ex: tar -jcvf /home/backup/l123123-var_20-10-2008.tar.bz2 /var/ } function Diretorio() { ## VAR ## if [ $i = '3' ]; then diretorio=$var i='4' ## ETC ## elif [ $i = '2' ]; then diretorio=$etc i='3' ## HOME ## elif [ $i = '1' ]; then i='2' ## SAIR ## else i='4' fi } function RemoveTemp() { rm -rf $backupdir/* # Remove arquivos armazenados no computador local } ###################################################################### ################## ################## ################## MAIN ################## ################## ################## ###################################################################### # Verificar Semana do Mes if [ $dia = 6 ]; then sem=$(expr $sem + 1 ) echo $sem > $backupdir/../cont.txt fi if [ $sem = 5 ]; then sem=1 echo $sem > $backupdir/../cont.txt fi # Verifica Sabado / Domingo if [ $dia = 0 -o $dia = 6 ]; then exit fi # Chamadas de funcao tais como "Atualizacao de Diretorio", "Realizacao de Backup", "Envio dos Arquivos" e "Teste de Integridade". while [ $i != '4' ]; do j='0' Diretorio # Atualizar Diretorio Backup while [ $j != '1' ]; do Send Integridade done done # Chamada da Funcao de Remocao de Arquivos Temporarios RemoveTemp # Fim do Script exit 0
Script que insere cor nos seus comandos :)
Script que verifica se existem arquivos repetidos em dois diretórios
Soma valores de uma lista (calculo notas, pontos, etc)
Script para verificação do serviço do Apache (webserver) em sistemas Linux Ubun
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Máquinas Virtuais com IP estático acessando Internet no Virtualbox
Instalar o Microsoft Edge no Slackware 15
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Problema com nome composto e organização na tela do yad (0)
Formatando cartão de memoria que nao formata[AJUDA] (18)
Primeira vez utilizando Linux Ubuntu 22.04 e já tenho problemas… (5)
warsaw parou de funcionar após atualização do sistema (solução) (1)