A algum tempo me deparei com um problema em um script de backup feito por um técnico que trabalhava na empresa antes de mim. Acabei por ter que procurar sobre esse sistema de backup chamado dar. Como fiz algumas alterações no script e incorporei a parte de limpeza feita por um colega, e ainda tem pouca documentação sobre esse sistema, resolvi escrever esse pequeno tutorial.
Não explicarei cada detalhe do script pois ele está bem comentado. Caso alguém tenha dúvida, me envie um e-mail que eu altero depois no script para ficar melhor de entender.
O script segue abaixo.
#!/bin/bash
######################################################
# Funções: *Executa backup semanal
# *Cria um arquivo de log
# *Remove os arquivos com mais de 30 dias
# *Envia e-mail para os usuários cadastrados em /etc/backupnotify-mail.list
#
# Autores: denth0r (zaq.tech@gmail.com)
# Jeronimo Vicente Farias (jeronimovf@yahoo.com.br)
# Willian Itiho Amano (itihoitiho@gmail.com)
#
# Última Alteração: 21/02/2007
#
######################################################
# Variáveis
# Idade do arquivo em dias (+30 = acima de 30 dias)
TIME="+30"
# Diretório de Destino
DIR_DESTINO=/mnt/hd-backup
# formato da data
DATA_FMT=$(/bin/date +%d%m%Y-%a)
# Define o nome do arquivo de backup no formato <dia><mes><ano>-<dia_da_semana>-completo-ultimo
ARQ_BACKUP=$DIR_DESTINO/$DATA_FMT-completo-ultimo
# Define o nome do arquivo de log no formato <dia><mes><ano>-<diasemana>-completo.log
ARQ_LOG=$DIR_DESTINO/$DATA_FMT-completo-ultimo.log
# Diretório usado como raiz para o backup
DIR_RAIZ=/
[1] Comentário enviado por rbn_jesus em 23/03/2007 - 17:06h
Estou com um problema em LVM, creio que vc possa me ajudar...
tenho uma configuração lvm em apenas 1 dispositivo, da seguinte forma:
xda1 - /boot - ext3
xda2 - lvm (lvm1 - / - ext3; lvm2 - swap)
como recupero as informações da 1ª partição do lvm neste despositivo?
[2] Comentário enviado por adrianosb em 27/03/2007 - 13:44h
Tentei fazer mais não deu certo, tentei com Debian 3.1 ...
# ./backup.sh
Unknown option: u
Unknown option: l
Unknown option: t
Unknown option: i
Unknown option: m
Unknown option: o
Usage: rename [-v] [-n] [-f] perlexpr [filenames]
parse error on command line (or included files) : Cannot add an absolute path
./backup.sh: line 73: /bin/mail: No such file or directory
/bin/tar: Removing leading `/' from member names
find: invalid predicate `-delete'
[4] Comentário enviado por adrianosb em 27/03/2007 - 17:10h
Mudei algumas coisas:
#!/bin/bash
######################################################
# Funções: *Executa backup semanal
# *Cria um arquivo de log
# *Remove os arquivos com mais de 30 dias
# *Envia e-mail para os usuários cadastrados em /etc/backupnotify-mail.list
#
# Autores: denth0r (zaq.tech@gmail.com)
# Jeronimo Vicente Farias (jeronimovf@yahoo.com.br)
# Willian Itiho Amano (itihoitiho@gmail.com)
#
# Última Alteração: 21/02/2007
#
######################################################
# Variáveis
# Idade do arquivo em dias (+30 = acima de 30 dias)
TIME="+30"
# Diretório de Destino
#DIR_DESTINO=/mnt/hd-backup
DIR_DESTINO=/hd-backup
# formato da data
#DATA_FMT=$(/bin/date +%d%m%Y-%a)
DATA_FMT=`date +%Y%m%d-%H.%M` # ano mes dia hr min
# Define o nome do arquivo de backup no formato <dia><mes><ano>-<dia_da_semana>-completo-ultimo
#ARQ_BACKUP=$DIR_DESTINO/$DATA_FMT-completo-ultimo
ARQ_BACKUP="$DIR_DESTINO"/"$DATA_FMT"-completo-ultimo
# Define o nome do arquivo de log no formato <dia><mes><ano>-<diasemana>-completo.log
#ARQ_LOG=$DIR_DESTINO/$DATA_FMT-completo-ultimo.log
ARQ_LOG="$ARQ_BACKUP".log
# Diretório usado como raiz para o backup
DIR_RAIZ=/
# Envia o sumário para os emails listados em BACKUPNOTIFY_MAIL
#(/bin/cat $BACKUPNOTIFY_MAIL) |
#while read MAILAC; do
# (/usr/bin/tail -n 17 $ARQ_LOG) |
# (/bin/mail -s "Sumario: backup servidor $SERV_NOME_COMPL - $ARQ_BACKUP" $MAILAC);
#done
# Compata o log em bz2 e remove o arquivo original
#/bin/tar -jcf $ARQ_LOG.tar.bz2 $ARQ_LOG
#/bin/rm -f $ARQ_LOG
# Remove os backups antigos
#find $DIR_DESTINO -type f -mtime $TIME -delete
#EOF
tentei executar e da um WARNING:
tales:/sbin# ./backup.sh
WARNING! The archive is located in the directory to backup, this may create an endless loop when the archive will try to save itself. You can either add -X "20070327-16.31-completo-ultimo.*.dar" on the command line, or change the location of the archive (see -h for help). Do you really want to continue? [return = OK | Esc = cancel]
tales:/sbin# ./backup.sh
WARNING! The archive is located in the directory to backup, this may create an endless loop when the archive will try to save itself. You can either add -X "20070327-18-04-completo-ultimo.*.dar" on the command line, or change the location of the archive (see -h for help). Do you really want to continue? [return = OK | Esc = cancel]
[12] Comentário enviado por White_Tiger em 28/03/2007 - 11:50h
Na verdade eu uso algo parecido. Se você percebeu no meu script ele cria os arquivos com "ultimo" no nome e antes de executar o backup ele remove este do nome dos arquivos existentes. Então o arquivo que tiver "ultimo" no nome é o mais atualizado e é ele que tem de ser utilizado para o diff.
Você pode testar o arquivo pela data também mas esse método é mais simples.