Faça um backup da caixa unix

0

Precisa de algum tipo de software (Debian) para criar backups. Geralmente tem poucas pastas, com arquivos de ~ 10k, tamanho total de zip ~ 5Gb. Deseja criar 7 backups no máximo ou seja, - exclua o mais antigo todos os dias.

i.e. precisa de pasta com 7 yyyy-mm-dd.tar.gz arquivos dentro com últimos arquivos. Tenho certeza de que existe algum tipo de software de console padrão para automatizar isso?

    
por Sathya 18.06.2011 / 17:06

3 respostas

3

Como você diz, há muitos softwares padrões para fazer isso. Eu estou usando um script de shell auto construído para o efeito por enquanto. No futuro, vou migrar para Perl para sinalizar sucesso e falhas em um painel. Já implementei um conceito semelhante para backups MySQL de seis servidores, eles atualizam o status no Amazon SimpleDB e eu tenho um painel para verificar o status.

Aqui está o meu script:

#!/bin/sh

HOSTNAME=MYHOSTNAME                               # name of this computer
DIRECTORIES="/var/www /etc/ /var/backup/database" # directories to backup
BACKUPDIR=/mnt/backup                             # where to store the backups
TIMEDIR=/mnt/backup/last-full                     # where to store time of full backup
TAR=/bin/tar                                      # name and location of tar

PATH=/usr/local/bin:/usr/bin:/bin
DOW='date +%a'                          # Day of the week e.g. Mon
DOM='date +%d'                          # Date of the Month e.g. 27
DM='date +%d%b%Y'                       # Date and Month e.g. 27Sep2010

# On the 6 of the month a permanent full backup is made
# Every Sunday a full backup is made - overwriting last Sundays backup
# The rest of the time an incremental backup is made. Each incremental
# backup overwrites last week incremental backup of the same name.
#
# if NEWER = "", then tar backs up all files in the directories
# otherwise it backs up files newer than the NEWER date. NEWER
# gets its date from the file written every Sunday.

# Monthly full backup
if [ $DOM = "06" ]; then
    NEWER=""
    $TAR $NEWER -cf $BACKUPDIR/$HOSTNAME-$DM.tar $DIRECTORIES
fi

# Weekly full backup
if [ $DOW = "Sun" ]; then
    NEWER=""
    NOW='date +%d-%b'

    # Update full backup date
    echo $NOW > $TIMEDIR/$HOSTNAME-full-date
    $TAR $NEWER -cf $BACKUPDIR/$HOSTNAME-$DOW.tar $DIRECTORIES

# Make incremental backup - overwrite last weeks
else

    # Get date of last full backup
    NEWER="--newer 'cat $TIMEDIR/$HOSTNAME-full-date'"
    $TAR $NEWER -cf $BACKUPDIR/$HOSTNAME-$DOW.tar $DIRECTORIES
fi
    
por 18.06.2011 / 17:23
1

É melhor usar o rsync para esse tipo de trabalho de backup. O Rsync é um utilitário feito sob medida para isso, pode fazer backups incrementais comparando backups anteriores e novos.

Se você quiser, pode combinar o rsync com logrotate .

    
por 18.06.2011 / 18:05
0

Sou fã de backups completos baseados em hardlink, já que na maioria dos aplicativos eles consomem pouco mais de espaço que os backups incrementais, mas ainda oferecem o luxo completo dos backups completos.

Uma ferramenta para automatizar backups baseados em hardlink é o rsnapshot , que é baseado no rsync. Você também pode usar diretamente rsync com a opção --link-dest para ativar a vinculação a um backup anterior para arquivos inalterados. O rsnapshot, no entanto, oferece a você toda a funcionalidade meta ao redor (mantendo muitos backups, excluindo os antigos, etc.).

    
por 19.06.2011 / 17:35