sendo irresponsável com backups

02 de novembro de 2006

Tudo começou algumas semanas atrás, quando chegou da China o meu adaptador CompactFlash para IDE. Resolvi testar e, já que na época estava em um feriado e com tempo, instalar o Debian Etch o mais cru possível e com um Asterisk completo, inclusive com os prompts GSM em inglês, no meu cartão CF de 256 megas. Tudo maravilhoso, funcionou de cara (apesar de ficar lento, por causa do filesystem errado - caso tenha curiosidade em saber). Na hora de testar isso eu deixei os meus discos ligados e, não faço idéia do porquê, no reboot seguinte algumas partições tinham ido pro inferno, direto e reto. Até mesmo a minha partição Windows ficou com informações erradas (out of bounds). Meu /home de 50GB sumiu.

Google, Google e mais Google. Tentei de tudo um pouco, e no fim das contas... consegui recuperar o que realmente interessava dentro do lost+found/ da quase extinta partição /home. Foi dose garimpar lá dentro, eram trocentos zilhões de diretórios e arquivos com nomes parecidos com #4463145, ao invés dos reais. Beleza, o susto foi grande, passou. Removi algum lixo pra deixar o novo backup menor e botei tudo no meu Macbook. Tudo deu uns 32GB, com coisas pessoais e profissionais desde 2000/2001. Logs de tudo que é lugar, todas as minhas fotos, músicas raras que demorei pra achar (como Kick Out The Tories, que levei quase 2 anos pra encontrar em MP3) e coisas que me dão arrepio só de pensar em perder de novo.

E não é que isso aconteceu? Perdi tudo novamente. Puta que o pariu, não aprendi a lição.

Mais ou menos 2 semanas depois disso tudo eu resolvi limpar meu Macbook (coitado, tava com os 32GB do backup, mais um Windows, mais o OSX e mais tranqueiras... 300 megas livres no disco). Apaguei os .tar que havia guardado, após restaurar tudo bonitinho no novo particionamento do disco principal que tenho (de 160GB). Deletei eles cerca de 5 minutos antes de tentar acessar uma partição FAT nova de dentro do meu Windows 2000. Ele não conseguiu, mas havia coisas lá, tava formatada certa e tinha arquivos grandes dentro.

Técnica da maçaneta entrou em ação: force pra abrir, se estiver emperrado... caso quebre, é porque tinha que trocar mesmo. Dancei, deixei um formatador do Windows refazer a FAT e, sei lá novamente o porquê, ele fodeu tudo mais uma vez. Rebootei no Debian pra usar normalmente a máquina e meu /home não montava mais. Merda. Na mesma hora eu pensei: putz, vai ser mais fácil arranjar algum undelete pro OSX do que recuperar algo no PC à essa altura. Tentei, mas em vão, pra variar.

Como eu já havia tido alguma experiência com isso (que ironia infeliz), já tentei de cara algumas coisas. Zerei o superblock, depois de usar o dumpe2fs pra confirmar os guardados, e mandei o fsck conferir a partição com várias opções googleadas e que de fato faziam sentido. E nada. Então resolvi fazer uma imagem da partição pro caso de fazer cagada, e assim eu poderia tentar recuperar (na verdade fazer experimentos) a imagem primeiro. Acontece que nessa altura eu já havia zerado as informações da partição e provavelmente por causa do programa de bosta do Windows, meu /home achava porque achava que era uma partição FAT! Mas era EXT3 - e se comportava como tal, com checagem no journaling pra matar ele e tudo o mais - até o superblock ir pro espaço!

FAT: Filesystem panic (dev hdc1) fat_get_cluster: invalid cluster chain (i_pos 0)

Essa aí foi a mensagem que eu mais vi desde segunda-feira, o dia em que comecei a tentar arrumar isso novamente. O problema mor havia acontecido poucas horas antes do show do Toy Dolls do post anterior. Resumo de buscas no Google: ninguém havia arrumado esse problema, nem haviam tido essa cagada com uma partição ex-EXT3. Tem muita gente no Google reclamando disso de partições FAT reais (na maioria pendrives ou cartões ou algum dispositivo USB), mas praticamente todos gritavam em coro: formate e instale tudo de novo. Instalar o que, diabos? Era meu /home de mais de 5 anos!

Eu precisava ter alguma noção do problema. Quer dizer, de uma possível solução. Tentativas aleatórias incluíram receber na tela diversos "logical sector size is zero" e "seek to [número random gigante aqui]: invalid argument". Sugeriram até usar o hexdump -c pra ver dentro da Matrix e ter idéia do que tava lá dentro. Na verdade eu até passei a conseguir montar a partição depois (como FAT, nunca mais como EXT3 nem 2, já que eu removi o journal). Só que só havia um diretório vazio dentro do lost+found/ dela, e qualquer comando nesse diretório (até um "cd" inocente) dava vários erros de I/O de disco. Mesmo o HD sendo novinho.

Usar o hexdump seria sacanagem. Lembrei na hora do Mondo Rescue (oficialmente uma "disaster recovery solution"). Só que antes resolvi testar o testdisk, que parecia fazer algo mais simples e que eu tava querendo: analisar a partição e descobrir se AINDA tinha algo lá dentro. E sim, tinha! Os primeiros resultados do testdisk me mostraram o que eu mais estimava: todas as fotos já tiradas por mim com a minha câmera e as da Danielle com a câmera dela. Legal, havia salvação!

Fiz com que o testdisk tentasse recuperar as informações corretas das partições (após ter tentado restaurar um backup do setor 6 da FAT de outro disco, em vão). Demorou um bocado, mas pelo menos eu ia acompanhando o dump dos dados e via alguns filenames conhecidos. No fim do processo ele deu erro, falou que não poderia ir adiante porque havia erros foobar em local XYZ devido a cluster corrompido na FAT. E então eu comecei a pensar no Mondo Rescue novamente.

Mas aí criei coragem e mandei pro espaço tudo o que eu tinha nas outras partições. Tudo valeria a pena pra recuperar meu /home. Meus 3 discos somam 255GB e a maior partição até então era do meu /home no PC. Refiz algumas contas e resolvi fazer um dump corajoso da partição numa área recém-limpa do total. Mandei pros quintos uma porrada de coisas, mas depois de acordar hoje cedo pra ver o resultado... fiquei muito, muito feliz. Deu certo. O pau de I/O havia sumido, e eu consegui fazer um backup emergencial dos arquivos "pequenos", no espaço total que sobrou (e que eu havia planejado/previsto).

Agora é só usar o Macbook mais uma vez como "ponte" e zerar TOTALMENTE meus 2 discos e começar do zero. Pelo menos meu /home milenar está seguro agora. Tenho 200 gigas de disco no Dreamhost.com, e só agora pensei em usar aquela porcaria pra guardar alguns arquivos.

Enfim, se você tem medo de perder alguma coisa do seu disco rígido, FAÇA BACKUPS AGORA! É sério, passei por essas 2 situações em menos de 1 mês pra finalmente, depois de trocentos anos usando computadores e Linux, pra me tocar. Me toquei tarde demais.

Se você tá lendo isso e pensou "ah, realmente é importante, mas faço isso amanhã, com calma"... pééé! Tá errado, faça AGORA. Faça um backup NESSE EXATO MOMENTO! Eu te avisei, e o Tom sagrado também: don't delay, make backups NOW!

PS: eu sou especialista em perder dados (meus... fique tranquilo, patrão), e só tenho que agradecer aos caras do Dreamhost, que me salvaram algum tempo atrás. Recuperaram, após uns 10 dias, cerca de 8 ou mais gigas de pacotes e fontes do Jam (pet project zumbi do meu SH3) que haviam sido removidos acidentalmente por um bot interno.

UPDATE: completamente por acaso, acabei de encontrar um PDF bem interessante (o link é pra uma versão HTML) da O'Reilly sobre como garimpar dados do diretório lost+found/.

© caio1982