Backup Incremental

Publicado por Bruno Annunciato (última atualização em 18/07/2012)

[ Hits: 11.115 ]

Download Backup-Incremental.sh




Script para Backup Incremental de Pastas e Arquivos.
Gera Log de todas as ações feitas durante Backup.
Gera lista de arquivos salvos.

  



Esconder código-fonte

#!/bin/bash
# Script para gerar Backups Incrementais.
# Criado por: Bruno Annunciato

#Variável correspondente ao diretório de log. (Onde o log do backup será gerado)
LOGDIRECTORY=/var/log

#Variáveis para a montagem do HD.
DEVHD=/dev/sdb1
DEVDIRECTORY=/mnt/Backup/

#Variaveis de montagem Servidor de Arquivos.
IP=192.168.7.60
MOUNTINGDIRECTORY=/mnt/DADOS/
FOLDERNETWORK=DADOS
USER=USER
PASS=PASSWORD
UID=UID_USER
GID=GID_USER

#Cria o arquivo de log do script de Backup.
echo "DATA: $(date +%d-%m-%Y)" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Montando o HD Externo para o Backup.
echo "" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
echo "Log das Montagens dos Dispositivos" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
mount $DEVHD $DEVDIRECTORY >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "HD Externo montando com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "HD Externo NÃO montando com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Montando o Servidor de Arquivos para o Backup.
mount.cifs //$IP/$FOLDERNETWORK $MOUNTINGDIRECTORY -o user=$USER,password=$PASS,uid=$UID,gid=$GID >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Pasta na Rede montanda com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Pasta na Rede NÃO montanda com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Variável que corresponde ao diretório de destino. (Onde o backup será gravado)
DAILYDIRECTORY=/mnt/Backup/Diario

#Variável correspondente ao diretório de origem. (Onde o backup será gerado)
BASEDIRECTORY=/mnt/DADOS

#Cria a pasta do Backup Incremental do dia.
mkdir $DAILYDIRECTORY/$(date +%d-%m-%Y)

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Pasta do Backup Incremental criada com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Pasta do Backup Incremental NÃO criada com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Cria o arquivo da lista de arquivos no backup.
echo "DATA: $(date +%d-%m-%Y)" >> $DAILYDIRECTORY/$(date +%d-%m-%Y)/list-$(date +%d-%m-%Y).txt

#Localiza e copia os arquivos alterados no dia.
#Gera lista de arquivos copiados do dia.
echo "" >> $DAILYDIRECTORY/$(date +%d-%m-%Y)/list-$(date +%d-%m-%Y).txt
echo "Lista de Arquivos Backupeados" >> $DAILYDIRECTORY/$(date +%d-%m-%Y)/list-$(date +%d-%m-%Y).txt
echo "" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
echo "Log dos Arquivos Backupeados" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
echo "Aguarde backup sendo efetuado."
echo "Esta parte do processo pode demorar mais de 2 horas..."
find $BASEDIRECTORY -type f -newermt $(date +%Y-%m-%d) -exec cp -Raprv --parents {} $DAILYDIRECTORY/$(date +%d-%m-%Y)/ \; >> $DAILYDIRECTORY/$(date +%d-%m-%Y)/list-$(date +%d-%m-%Y).txt

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Copia dos arquivos alterados efetuado com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Copia dos arquivos alterados NÃO efetuada com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi


#Cria o pacote ".tar.gz2".
echo "" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
echo "Log da Compactação" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
tar -vcf $DAILYDIRECTORY/$(date +%d-%m-%Y)/backup-$(date +%d-%m-%Y).tar $DAILYDIRECTORY/$(date +%d-%m-%Y)/ >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Arquivo '.tar' criado com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Arquivo '.tar' NÃO criado com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

bzip2 $DAILYDIRECTORY/$(date +%d-%m-%Y)/backup-$(date +%d-%m-%Y).tar >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Arquivo '.tar.bz2' criado com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Arquivo '.tar.bz2' NÃO criado com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Efetua copia para a pasta raiz.
echo "" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log4
echo "Log da Copia" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
cp -v $DAILYDIRECTORY/$(date +%d-%m-%Y)/backup-$(date +%d-%m-%Y).tar.bz2 $DAILYDIRECTORY/ >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Copia do arquivo '.tar.bz2' efetuada com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Copia do arquivo '.tar.bz2' NÃO efetuada com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Removendo pasta do Backup (Deixando somente o pacote ".tar.bz2").
echo "" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
echo "Log da Limpeza" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
rm -vRf $DAILYDIRECTORY/$(date +%d-%m-%Y)/ >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Pasta removida com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Pasta NÃO removida com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Removendo backup de 14 dias atrás.
rm -vRf $DAILYDIRECTORY/backup-$(date +%d-%m-%Y -d "14 days ago").tar.bz2 >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Backup de 14 dias atrás removido com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Backup de 14 dias atrás NÃO removido com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Montando o HD Externo para o Backup.
echo "" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
echo "Log das Desmontagens dos Dispositivos" >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
umount $DEVDIRECTORY >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "HD Externo desmontado com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "HD Externo NÃO desmontado com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Montando o Servidor de Arquivos para o Backup.
umount $MOUNTINGDIRECTORY >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log

#Controle de Erros.
    if [ $? == 0 ]
   then
     echo "Pasta na Rede desmontada com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
   else
     echo "Pasta na Rede NÃO desmontada com sucesso! " >> $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log
    fi

#Informações Finais.
echo "Log armazenado em: $LOGDIRECTORY/backup-$(date +%d-%m-%Y).log"
echo "Rotina Finalizada! "

Scripts recomendados

Criando usuário com poderes de root

Script para Firewall de Borda Corporativo

Geração de gráfico em shell script

Substituir strings em arquivos ascII

Liberar acesso por MAC/IP


  

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