Minha experiência com backup me ensinou uma coisa: Fazer backup, testar backup, guardar backup, fazer backup do backup, guardar o backup do backup.
Se eu pudesse dar só uma dica sobre o futuro seria esta: Façam backup!
Para ilustrar como aprendi isso, vou contar uma história que aconteceu comigo:
Meu trabalho daquela sexta feira levaria 2 dias para ser concluída. Uma migração do sistema operacional que exigia uma formatação da máquina.
Era coisa simples... se tudo tivesse dado certo. Não deu.
Fiz mentalmente a lista do que era necessário fazer:
1. Compactar os dados do cliente no servidor, na pasta usada para transferir arquivos
2. Enviar os dados para o nosso servidor interno, na nossa pasta de transferência de arquivos
3. Enviar o servidor para formatar e reinstalar os programas e pacotes necessários
4. Enviar os dados da nossa pasta de transferência para o servidor do cliente
5. Descompactar os dados do cliente nos diretórios corretos
Então comecei o trabalho. Compactei os dados e enviei para o servidor interno. Geralmente essas transferências demoram porque o volume de dados é grande. Aquela transferência não demorou tanto assim... Desconfiei que a transferência havia sido interrompida, e enviei novamente. Foi rápido. Testei o arquivo para saber se estava corrompido, mas tudo estava normal, mas o arquivo foi testado rápido demais. visitei o histórico dos comandos executados e vi que não fiz o backup de vários diretórios que eram necessários. Refiz os passos 1 e 2, me certificando que todos os diretórios estavam inclusos e que o backup não tinha sido corrompido.
E foi nesse ponto que eu tive um sentimento ruim quanto ao backup. Ele estava correto, não corrompido e no nosso servidor, mas algo parecia errado e eu não sabia o que era. Então resolvi fazer um backup do meu backup, e copiei os dados para outro diretório (mas poderia ter colocado em outro servidor). Fiz um backup do backup. Enviei o servidor do cliente para formatação no meio do dia. Ficaria pronto no outro dia útil (segunda feira).
Quando voltei na Segunda feira, o servidor já estava lá me esperando. conectei os cabos, liguei e me preparei para fazer a transferência de volta para o servidor. Foi então que eu executei um comando ls e senti um frio subir na espinha: O diretório de transferências havia sido esvaziado (uma rotina de crontab faz a limpeza do diretório todo fim de semana). Todos os arquivos tinham sido removidos. TODOS. OS. ARQUIVOS.
Me lembro de ter encostado na cadeira e respirado fundo, tentando lembrar se eu realmente tinha colocado lá. Então eu lembrei que havia aquele backup do backup. Nunca me senti tão aliviado. Busquei os arquivos e mandei para o servidor. Descompactei e testei se tudo estava funcionando corretamente. ESTAVA! Agora só faltava remover os arquivos temporários, e enviar o servidor para o cliente. Já podia até apagar os arquivos de backup para não ocupar muito espaço, certo? Errado. Deixei uma cópia do backup no servidor interno e outra no servido do cliente.então pensei digitar o seguinte comando:
rm /user/transf/backup* -rf
mas acabei digitando e executando outro comando:
rm / user/transf/backup* -rf
consegue ver a diferença? no segundo comando existe um espaço após a primeira barra.
Se você não está familiarizado com os comandos, eu explico. No primeiro comando eu removo de forma recursiva todos os arquivos e diretórios que estão dentro do diretório /user/transf/ e que comecem com a palavra backup. No segundo comando eu vou primeiro remover todos os arquivos, programas, logs, backups, usuários, arquivos do sistema operacional, arquivos críticos para o funcionamento do servidor.... e depois eu vou tentar remover um arquivo que não existe mais.
Eu estava logado como root, e aqui eu deixo mais uma lição: Nunca remova arquivos recursivamente e com "force" quando estiver como root
Lembrete: "nunca execute rm -rf como root"
Quando me dei conta do que eu tinha feito, cancelei o comando e fui ver o estrago que eu tinha feito... Quando reiniciei a máquina ela nem completava o boot mais. Não havia mais como recuperar. Enviei a máquina novamente para formatar, e respirei aliviado mais uma vez por ter feito aquele backup do backup.
Quando a máquina voltou, fiz todos os passos com muito cuidado para não cometer os erros. No fim, tudo funcionou como deveria.
Moral da história
FAÇA BACKUP, FAÇA BACKUP DO BACKUP. TESTE OS DOIS, SALVE EM LUGARES DIFERENTES. GUARDE O BACKUP. TESTE PERIÓDICAMENTE.
(Tudo em caps lock, para mostrar que é muito importante)