Backup Incremental - tar

Publicado por Rodrigo Sozza 14/06/2008

[ Hits: 15.485 ]

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

Atualização automática do Slackware

backup criptografado

Limpa comentários e linhas em branco nos arquivos de configuração (.conf)

instalado automatico do nagio 3.3.1 no debian 6

Script para iniciar programas instalados no wine


  

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