Recuperando dados deletados de uma partição reiserfs


Assunto delicado, perder um dado importante ou todos os dados de uma partição ou uma partição inteira é como um incêndio na casa de um geek…. Eu mesmo já surtei inúmeras vezes nessa lista por ter perdido partições inteiras ao instalar uma distro nova (Conectiva 7 e depois nunca mais usei conectiva), ao dar um comando errado na hora errada na partição certa ou por falha de disco…. alias meu HD aqui já tem 3 anos……
Bom Após passar 2 semanas puxando um game de playstation ( Valkyrie Profile= RPG ambientado nas culturas nórdicas, asgard, odim, vicking e tals…) para curtir nas férias, hoje finalmente o jogo veio ! Tava puxando por bittorrent e no ápice do meu egoísmo, fui deletar o torrent para não fazer mais upload |:-> mas cai na pegadinha do tab-completion do shell que completou com o arquivo rar em vez do torrent X-(
Digamos que nenhuma política de backup poderia ter me salvado dessa tragédia…
Então vou descrever aqui como recuperar dados deletados de uma partição reiserfs incluindo os passos que dei para recuperar meus dados 🙂

Lascou-se ! Tudo deu errado ! Deletou tudo ! TIRE SEU MICRO DA TOMADA IMEDIATAMENTE, isso ai puxe o fio ! Não dê shutdown !
Parece loucura, afinal , tirar o micro da tomada não é nenhum procedimento técnico não é mesmo ? Mas isso impede que o sistema operacional grave arquivos no disco… Ao deletar um arquivo na verdade o sistema operacional apenas realoca seu espaço ocupado para novos arquivos, se por um acaso o SO gravar um novo arquivo ele pode sobre-escrever seu precioso arquivo com algum arquivo temporário ou um importante log do sistema :-/

Muita calma nessa hora o computador está desligado, seu arquivo está seguro ! Para religar todo cuidado é pouco, um erro e todos seus arquivos deletados podem ir para o limbo ! Será nescessário religar seu sistema em modo reparo com as partições em RO (read-only), como fazer ?
Se vc usa lilo/yaboot, dê um tab no prompt descubra o nome do Label do seu sistema e acrescente “ro init=/bin/bash”, por exemplo :

Linux ro init=/bin/bash

Se vc usa grub, no menu de opções aperte “e” no item que corresponde a sua distro, “e” na linha do kernel e adicione “ro init=/bin/bash no final…. então aperte ESC e b para bootar.

Isso vai fazer com que o sistema monte a partição root em modo ro e vai iniciar o processo bash como processo número 1 no lugar do init…. Pode acontecer do diretório dev não ser populado ou seja não será possível montar outras partições se nescessário… se isso acontecer, vc deve remontar a partição / para leitura e escrita (mount -o rw,remount /) e rodar o comando udevstart (ou devfsd para quem usa sistemas antigos como debian sarge desatualizado e etc…) e rezar para dar certo.

Se tudo der errado, a única forma é iniciar o sistema no runlevel 1 , mas isso pode ser uma péssima idéia em algumas distros… várias delas escrevem no disco antes de entrar em modo de manutenção, entre elas : Fedora, Ubuntu, gentoo… deve haver uma porção delas por ai… Tenho quase certeza que slackware e debian não o fazem.

Na distro em questão (gentoo) isso ocorreu, o sistema escreveu no disco e não foi pouco : as consequencias serão descritas no final…..

Bom com o sistema montado em ro e com o bash em mãos é hora de agir ! O sistema de arquivos reiserfs peca por não ter uma ferramenta para recuperar arquivos deletados…. ou pior se ela existe não é livre (várias ferramentas de sistema do reiserfs não são livres….), mas tem uma gambiarra que funciona bem….É o comando
reiserfsck !

Use :

reiserfsck –rebuild-tree -S /dev/PARTICAO

Esse comando vai buscar por todos os arquivos e diretórios e vestígios dos mesmos na partição e vai criar um diretório chamado “lost+found” no topo da partição…
dentro desse diretório vc vai encontrar uma porção de arquivos cujo o nome são apenas números… no meu caso tive que procurar por um arquivo grande, e achei, depois para confirmar usei o programa “file” para identificar o conteúdo ,tá lá ! Arquivo RAR na cabeça, então foi só renomear….
Tive a sorte de ser um arquivo grande , fácil de identificar… mas e se fosse um arquivo pequeno ? Bem mais complicado, não tem jeito é garimpar até achar…. No caso de diretórios inteiros ou partições a sistuação é mais grave, todos eles vão ter números como nomes e muitas vezes arquivos aparecem fora de seus diretórios …. uma zona.

Bom, e como meu sistema inicializou em init 1 e escreveu no disco não deu outra, ele corrompeu partes do meu arquivo e só pude recuperar 30% do meu arquivo original, bom melhor que nada :-/