Terça-feira, Fevereiro 10, 2009

Backup automático no linux em casa

Tá bom, estas coisas acontecem. De repente meu HD deixa de funcionar. Eu ter um sistema de arquivos não muito tradicional, não ajuda. Pior ainda, o fato do criador do sistema de arquivos ter assassinado a mulher e estar na cadeia, me preocupa um pouco mais. Mas na Internet sempre há uns anjos que nos dão dicas de como salvar o dia.

Não era o disco de dados mais importantes, tinha minhas fotos e minhas músicas. Quase todas as fotos têm uma cópia no computador da minha mulher. O backup das músicas é minha coleção de CDs (isto mesmo, crianças, aqueles disquinhos prateados). Só que ao ver o HD morrendo, fiquei tremendo só de pensar que teria que digitalizar novamente mais de 70Gb de músicas. Até hoje não consegui ripar nem metade de minha coleção. Voltar ao zero seria aterrorizador. Ah! E pra piorar descobri que minha mulher não tinha as cópias de todas minhas fotos.

Comprei um novo HD maior. Aproveitei para mudar de distribuição linux (outro post para isto). Com meus dados recuperados resolvi montar um esquema de backup de verdade. Eis como fiz.

Comprei um HD extra de 500Gb (caraca, isto é meio terabyte!!!). Comprei um case (ou enclosure) de HD externo SATA to USB2.0 da Coolermaster modelo X Craft 310. Aqui ficará meu backup. Formatei-o como ext3. Li recomendações de que o melhor filesystem seria o XFS. Só que quando caos baixar, o ext3 tem melhores drivers para ser lido de dentro do Windows. Melhor ser conservador nestes assuntos.

Agora tenho que montar os discos. O de backup e o Meus Documentos do computador Windows de minha mulher. Ela vai ganhar um backup de brinde também. Aprendi uma coisa legal, que agora posso montar discos por UUID. É ótimo para discos USB. Meu disco USB será sempre montado em /mnt/backup. O da chefe será montado via samba em /mnt/chris após ter sido compartilhado sem senha no windows. Ficaram assim suas entradas no /etc/fstab:

UUID=33f7417a-88ff-4570-80f2-3e57731fbb42 /mnt/backup ext3 noatime,users 0 0
//chris/samba-choro /mnt/chris smbfs exec,users,_netdev,rw,b,uid=neves,iocharset=utf8,password= 1 2
O resto agora é mole pro Linux. Só usar o cron, daemon que executa comandos periodicamente, e o rsync, que copia apenas arquivos que foram modificados. São ferramentas padrão do sistema.

Um problema é que o computador da patroa podia estar desligado. Outro é que o disco de backup poderia não estar montado (tive problemas com a montagem automática no Kubuntu). No primeiro caso, pareceria que o diretório estava vazio e todo o backup seria apagado. No segundo, copiaria tudo para meu próprio HD que seria devidamente esmagado pelo peso de tantos arquivos.

Descobri outro prático utilitário, o mountpoint. Ele testa se uma partição está corretamente montada e acessível. Meu simples script de backup ficou assim:
#/bin/sh

if mountpoint -q /mnt/backup
then
#-v verbose
#-a archive (recursivo, permissões, links etc)
#-x no cross filesystem boundaries
#-E mantém executáveis
#--delete apaga os que sumiram
rsync -vaxE --delete --ignore-errors /home/neves/ /mnt/backup/neves/

if mountpoint -q /mnt/chris
then
rsync -vaxE --delete --ignore-errors /mnt/chris/ /mnt/backup/chris/
fi
fi

exit 0
Prontinho. Agora é só dar permissão de execução à ele: "chmod +x backup.sh". Colocá-lo no crontab do root "sudo crontab -e" com:
0 12 * * * /home/neves/bin/backup.sh
Voilá. Backup automático configurado. Todo dia ao meio-dia será feita a cópia de meus dados novos. A primeira é meio demorada, as outras são impressionantemente rápidas.

Ainda não é um sistema à prova de meteoros. Para isto teria que ter mais um HD e um case e guardar as cópias longe. Isto fica quando entrar um dinheirinho. Mas o negócio de backup é probabilidade e Murphy. Por enquanto estou melhor do que estava.

0 comentários: