time machine no linux com rsync

Como todos sabem, eu adoro o Leopard, e gosto muito do seu sistema de backup, é ridiculamente simples. Até mesmo sua implementação é simples, ele cria um diretório para cada hora, e a partir de um rsync de tudo vai fazendo cópias incrementais dos arquivos modificados (novos), e hardlinks de todos os outros. Então dentro de cada diretório ele tem uma cópia do sistema inteiro, mas gastando quase nada de disco, afinal são hardlinks.

time-machine-rsync

Procurando pelo sistema perfeito de backup (não existe, eu sei), acabei escrevendo um script ridiculo que funciona de forma parecida com o Time Machine da apple, mas sem todos aqueles efeitos especiais e nem a integração com os softwares do sistema. Pra usar basta instalar o rsync na máquina que vai receber os backups e na máquina que será backupeada, o código é esse :


cd /mnt/backup && \
rsync -ptvr --delete  user@maquina:/home/user/ last ; \
cd last && \
find | cpio -dplm ../new && \
cd - && \
mv last `date +%Y%m%d` && \
mv new last

O script deve rodar na máquina que vai receber o backup , o primeiro “cd” é no diretório onde o backup será realizado, depois o rsync transfere o diretório para “last”. O script entra em “last” e cria hardlinks para todos os arquivos, e cria seus diretórios pais no diretório “new”. Então o script volta para o diretório anterior renomeia o diretório “last” para um com a data de hoje para o nome, e finalmente move o diretório “new” para “last.

Parece confuso, mas é bem simples, ele baixa o backup para last faz o diff para new, move o last para
a data de hoje, e move o new para last. Isso faz com que o rsync baixe apenas os novos arquivos do backup e armazena uma cópia completa do sistema em cada diretório datado. Assim para recuperar um arquivo do dia X , basta entrar no diretório X. Como expliquei, as cópias não ocupam espaço pois são hardlinks, genial né ? Rsyn e cpio são ferramentas antigas, pq ninguém pensou nisso antes ?

Quando mostrei esse script para alguns conhecidos, me perguntaram se eu faria uma interface bonitinha como o do Time Machine, minha resposta é não. Pois cada linux é um linux, cada distro é uma distro, cada gerenciador de arquivos é um gerenciador de arquivos. No mundo livre, não temos padrões, e escrever código pra integrar todo mundo é impossível… No mac os x o padrão existe, todas as ferramentas apple estão integradas com o Time Machine, pois a Apple define os padrões, e que não segue não desenvolve pra OSX.

Aproveite o script

One thought on “time machine no linux com rsync

  1. Carlos

    “… pq ninguém pensou nisso antes ?”

    Procure por “Mike Rubel” e “Art Mulder”, você vai ver que essa idéia já tem uns dez anos, se não mais… Embora pouco conhecido, esse tipo de backup “rotativo” com hard-links já era usado em sistemas UNIX nos anos 90.

Comments are closed.