quarta-feira, 27 de agosto de 2008

Usando find + tar para fazer backups

Como todo bom administrador de sistemas, com uma certa regularidade é necessário fazer backup dos arquivos contidos no servidor, ainda mais se for um samba onde pode estar o trabalho de muitos funcionários de sua empresa. É prudente que de tempos em tempos seja feito um backup completo do sistema porém fazer isso de forma regular é muito tedioso, leva tempo e você precisa ter bastante espaço para realizar um backup desse tipo!

Uma forma interessante de realizar backups incrementais é usar a dupla find + tar! O comando find é extremamente poderoso e até pouco tempo comecei a desvendar bem suas funcionalidades e capacidades! Primeiro ele permite que você encontre um arquivo no seu disco com uma variedade de características como:
  • Tempo em horas da última modificação (-mtime n)
  • Tempo em minutos da última modificação (-mmin n)
  • Tempo em minutos desde o último acesso (-amin n)
  • Arquivo pertence a um grupo especifico (-group grupo)
  • Arquivo pertence a um usuário especifico (-user usuário)
  • Arquivo possui um tamanho especifico (-size n[k|M|G])
Existem muitas outras possibilidades e estão todas listadas no manual do find, e com elas é possível encontrar arquivos com características específicas! Com a saída dele é possível usar o tar para criar seu arquivo de backup!

Creio que a parte que pode complicar um pouco em um processo automático de backup usando o find + tar é que arquivos que contém espaços em seus nomes podem não ser guardados corretamente e eu experimentei isso quando fui usar o tar recebendo a saída do find! Ainda bem que existe uma opção que corrige esse problema e o backup é efetuado com sucesso! O comando que utilizei para criar um backup incremental usando o find foi o seguinte:

find /diretorio/de/destino/ -mtime -30 -type f -print0 | xargs -0 tar -rf backup.tar

Com isso eu vou encontrar os arquivos que foram modificados nos últimos 30 dias (-mtime -30) que são arquivos regulares (-type f). O que possibilita a execução deste comando sem erros ao criar o arquivo é "-print0 | xargs -0"! O primeiro argumento, o print0, trata corretamente os espaços em branco nos nomes dos arquivos permitindo o correto processamento destes por programas que utilizam a saída do find. A opção do xargs trata a saída do find exatamente da mesma forma e executa o tar, criando assim um backup dos arquivos encontrados!

O tar por si só possui a funcionalidade de backup incremental, mas eu vejo que usando o find no processo de backup permite uma flexibilidade muito grande para encontrar arquivos específicos em seu disco rígido.

Um passo que nunca esqueço nesse procedimento é o de criar uma verificação de integridade com o md5sum, dessa forma no momento de restaura-lo posso ter a segurança de que os arquivos não foram corrompidos! Essa ferramenta existe em qualquer distribuição moderna de linux.

Nenhum comentário: