você está aqui: Home  → Arquivo de Mensagens

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



 

 

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

Opinião dos Leitores

Marcelo
16 Nov 2016, 08:40
Alguns tipos específicos de "problemas" que podem prejudicar um site exigem a análise do log para solucioná-los. Na minha humilde opinião, não incluir o log no backup, caso alguns desses "problemas" apareçam, vai obrigar o administrador a restaurar o site repetidas vezes, até que se possa identificar o "problema" registrado no log preservado pelo backup.
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script