dfelipenm
(usa CentOS)
Enviado em 24/03/2011 - 13:14h
É o seguinte, vou detalhar a parte técnica:
Plataforma: Linux centos
script:
#!/bin/sh
#
# Identificação dos arquivos
IDENTIFICA=Backup_usuarios
# Numero de dias do ciclo de backup
DIAS=7
# E-mail do administrador
ADMIN=filoauto@bkp
# A partir de onde ficarão os arquivos
PREFIX=/mnt/hd_externo/backup/usuarios
# Onde os arquivos de backup e logs ficarão armazenados
DIR_DESTINO=/mnt/hd_externo/backup/usuarios
# 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)
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
A hierarquia que eu citei é referente aos diretórios que precisam estar dentro do hd externo pra receber os backups.
/mnt/hd_externo/backup/total/etc
dentro desse diretorio etc tem que estar 6 arquivos: backup.conf, backup.bak, exclude.list, incremental.conf, incremental.conf.bak e list.conf
cada um pra uma função especifica, mas o principal eh o LIST.CONF, onde tem o diretorio que o script vai ter que ir buscar os arquivos pra copiar.
Se precisarem de mais alguma informação, por favor avisem!