De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Automatização de backups remotos

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 16 de novembro de 2016

Eu procuro manter entre dois a três backups de todos os sites que mantenho. É um pouco de paranóia, mas felizmente, até hoje, nos quase 23 anos de existência da Dicas-L eu nunca perdi um arquivo sequer.

Eu faço backups em meu computador pessoal e também em dois HDs externos. Nos HDs eu faço apenas uma cópia com o programa rsync da posição existente em determinado momento, ou seja, não é incremental.

O script que eu uso para os backups incrementais é bastante simples:

#!/bin/bash
data=`date +%Y%m%d`
cd /backup
mkdir $data
cp -alR `cat last`/* $data
cd $data

rsync -avz -e ssh --delete --exclude '/tmp'         \
                           --exclude '/proc'        \
                           --exclude '*.log'        \
                           --exclude '/sys'         \
                           --exclude '/dev/'        \
                           --exclude '/boot/'       \
                           --exclude '/var/spool'   \
                           --exclude '/var/tmp'     \
                           --exclude '/var/log'     \
                           --exclude '/var/tmp'     \
                           --exclude '/var/cache'   \
                           www.dicas-l.com.br:/     .

echo $data > ../last

Este script roda automaticamente a partir do arquivo /etc/rc.local, ou seja, sempre que ligo meu computador o backup é feito.

Para cada dia, eu crio um novo diretório, cujo nome é derivado da data do dia, determinado a partir da variável $data. O comando

$  cp -alR `cat last`/* $data

faz uma cópia utilizando hard links a partir do diretório criado quando da execução do backup do dia anterior. Com os hard links os arquivos não são efetivamente copiados, mas é feito um link para o arquivo original. Um arquivo em disco pode ter vários apontadores para ele, que se comportam exatamente como o arquivo original.

O arquivo last contém a data em que o backup foi executado pela última vez e é criado ao final da execução do programa. A diretiva -l do comando cp instrui o programa para não copiar os arquivos mas sim para criar um hard link para o arquivo original. Desta forma posso ter múltiplos backups sem aumentar consideravelmente o consumo de espaço em disco. Posso manter dezenas de versões com uso de pouco espaço em disco adicional.

Na sintaxe do comando rsync eu excluo diversos arquivos temporários e outros que não são diretamente relevantes para a reconstrução do sistema em outro provedor.

No diretório /backup eu terei então diversos outros diretórios contendo a posição do portal segundo determinado dia. O nome dos diretórios segue o formato AAAAMMDD (ano, mês e dia).

O script é bem simples, pode ser aperfeiçoado de várias formas, mas me atende bem até o momento. Existem pacotes prontos que fazem a mesma função, com mais controles e opções como o software rsnapshot.

Saiba mais

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida