Backup Incremental

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

[ Hits: 11.096 ]

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

Levantamento de hardware e software no Mandriva 2006

SwapFile - swap dinâmico

Servidor HTTP em Bash

Status port

Debian Help Admin 1.1


  

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