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.
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.