Backup Incremental - tar

Publicado por Rodrigo Sozza 14/06/2008

[ Hits: 15.472 ]

Homepage: http://softwarelivre.org/rsozza

Download backup_incremental.txt




Modelo de Backup Incremental que concatena os arquivos em um tar.

  



Esconder código-fonte

#!/bin/bash
  #
  # Identificação dos arquivos
  IDENTIFICA=Backup
  
  # Numero de dias do ciclo de backup
  DIAS=7
  
  # E-mail do administrador
  ADMIN=admin@exemplo.com.br
  
  # A partir de onde ficarão os arquivos
  PREFIX=/backup
  
  # Onde os arquivos de backup e logs ficarão armazenados
  DIR_DESTINO=/backup/arquivos
  
  # Lista de arquivos a não serem backupeados
  EXCLUDE=$PREFIX/etc/exclude.list
  
  # Arquivos temporário do script
  TEMP=/tmp/.backup.$$
  
  # Arquivos de controle do GNU/Tar
  INC=$PREFIX/etc/incremental.conf
  
  # Formato da data
  DATA=$(date +%d-%m-%Y-%a)
  
  # Arquivo com a lista de diretórios a serem backupeados
  LISTA=$(cat $PREFIX/etc/list.conf | grep ^\/ | sort | uniq)
  
  # Arquivos gerado pelo script para controle de incremento
  CONFIG=$PREFIX/etc/backup.conf
  
  VOLTA=0
  if [ ! -e $CONFIG ] ; then
         touch $CONFIG
         NUMERO=1
  else
         cp -f $CONFIG $CONFIG.bak
         LINHAS=$(cat $CONFIG | grep ^[0-9] | wc -l)
         [ $LINHAS -eq $((DIAS+1)) ] && VOLTA=1
         FIRST=$(cat $CONFIG | grep ^[0-9]- | head -1)
         LAST=$(cat $CONFIG | grep ^[0-9]- | tail -1)
         OLD=$(echo $LAST | cut -f1 -d"-")
         OLD=${OLD:-0}
         BACKUP_OLD=$(echo $FIRST | cut -f1 -d"-")
         FILE_OLD=$(echo $FIRST | cut -f- -d"-")
         if [ $OLD -eq $DIAS ] ; then
                 NUMERO=1
                 mv -f $INC $INC.bak
         else
                 NUMERO=$((OLD+1))
         fi
  fi
  
  DESTINO=$DIR_DESTINO/$IDENTIFICA-$NUMERO-$DATA
  
  SEND_MAIL () {
         sendmail $ADMIN << FIMEMAIL
  Subject: Backup CL $(date +%d-%m-%Y)
  
  Backup realizado no arquivo: $DESTINO.tar.gz
  
  FIMEMAIL
  
  }
  
  df -h > $DESTINO.log
  tar --totals --ignore-failed-read --exclude-from=$EXCLUDE -zcvg $INC -f $DESTINO.tar.gz $LISTA >> $DESTINO.log 2>&1
  df -h >> $DESTINO.log
  SEND_MAIL $DESTINO.log
  echo $NUMERO-$DATA >> $CONFIG
  if [ $VOLTA -eq 1 ] ; then
         rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.tar.gz
         rm -f $DIR_DESTINO/$IDENTIFICA-$FILE_OLD.log
         sed 1d $CONFIG > $TEMP
         mv -f $TEMP $CONFIG
  fi

Scripts recomendados

Script Para desligar o Debian

Cálculo de Horas

Cálculo de raiz quadrada

Monitoração e coleta de dados de performance de servidores GNU/Linux

Localizar e Matar Determinado Processo Pelo Nome


  

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