Para que os usuários possam usar o volume de backup, é uma boa ideia montá-lo como um sistema NFS apenas para leitura. É importante limitar a capacidade de escrita no sistema porque, devido à natureza dos hardlinks, seria muito fácil criar problemas inesperados – editar uma versão de um arquivo que apareça em vários conjuntos de backups editaria todos eles!
Eu simplesmente disponibilizei o /backup desse jeito. Assim, se qualquer pessoa na LAN quiser corrigir um arquivo corrompido, só terá que visitar /backup/auto/date/ e procurar por uma data apropriada para localizar uma cópia do arquivo. Igualzinho à “Wayback Machine” da internet.
Como a mágica funciona
Essa técnica se originou com Mike Ruble, que sugeriu o uso da ferramenta de espelhamento rsync e de hardlinks para criar backups incrementais usando um mínimo de espaço. A mágica aqui é que apenas os arquivos alterados são armazenados em cada backup, mas ainda assim, do ponto de vista do usuário, é exatamente como se ele estivesse navegando por sistemas de arquivos completos e independentes para cada backup.
O programa rsync foi desenvolvido para economizar banda ao fazer espelhamento de locais remotos. Sendo assim, ele tenta concluir a cópia gerando (e comunicando) a menor quantidade possível de informações. O cliente pede ao servidor que verifique se os arquivos sofreram alterações. Em caso positivo, os arquivos são copiados da origem para o destino do espelhamento.
Essa é a primeira parte do truque.
A segunda é o uso dos “hardlinks”. Quando você cria um arquivo em um sistema de arquivos do Unix ou do Linux, você está armazenando não apenas dados, como também uma entrada no diretório que aponta para esses dados. Porém, não há nenhuma razão especial para que não possa haver mais de um link desses, que podem aparecer em vários diretórios.
Todos esses links possuem os mesmos direitos com relação aos dados desse arquivo. O software do sistema de arquivos mantém os dados enquanto ao menos um link apontar para ele (quando o último link é removido, o sistema adiciona esses blocos ao espaço disponível em disco).
O que o rsnapshot faz em cada backup é criar um sistema de diretório completo, usando esses links que apontam para os dados de backup anteriores. Sendo assim, no começo de cada backup há duas estruturas de diretórios apontando para os mesmos dados.
Aí o rsync é executado no diretório copiado. Sempre que um arquivo alterado é encontrado no sistema de arquivos de origem (o diretório do qual o backup está sendo feito), um novo bloco de dados é criado, substituindo os dados antigos. De forma semelhante, qualquer arquivo novo que aparecer no sistema de origem é criado no novo backup. Mas os arquivos que não foram alterados não são afetados (devido à forma relaxada com que o rsync conduz o backup), e vão continuar como hardlinks que apontam para os dados originais.
No fim das contas, você fica com dois sistemas de diretórios que parecem ser cópias independentes da origem em momentos diferentes. Na verdade, porém, você só estará usando o espaço de uma única cópia, além do espaço ocupado pelos arquivos que foram alterados. Na prática, isso geralmente constitui apenas uma pequena porcentagem do tamanho da primeira cópia.
Obviamente, tudo isso seria arruinado se você precisasse escrever no sistema (você pareceria estar alterando dois arquivos ao mesmo tempo, porque na verdade os dois são o mesmo arquivo). No entanto, ao acessar um sistema de backups, não estamos interessados em escrever nele, mas sim em lê-lo. Para isso, a abordagem do rsnapshot é perfeita!
Sua própria Wayback Machine
Eu queria configurar um sistema desses desde que li o artigo de Mike Rubel com essa ideia. O pacote rsnapshot cuidou de tudo, exceto pelo índice de dados, e não foi muito difícil preparar um script para isso.
Estou rodando esse sistema há seis semanas sem problemas, então acho que ele é bem confiável. Ele deve funcionar em qualquer sistema GNU/Linux, embora eu só tenha fornecido instruções para os sistemas derivados do Debian (incluindo o Ubuntu, por exemplo).
Espero que esse sistema faça você dormir tranquilo como eu!
Créditos a Terry Hancock – freesoftwaremagazine.com
Tradução por Roberto Bechtlufft <info at bechtranslations.com.br>
Deixe seu comentário