Spawnzao

Recuperar arquivos deletados com o extundelete

Por em 05/08/2011 - 4,319 views

Recentemente tive problema com meu banco de dados mysql, por um problema do kernel do linux que estava salvando os arquivos temporários do mysql no “/” e não no “/var”, que é uma partição separada com espaço de sobra. Resumindo o problema, o “/” do servidor encheu e corrompeu as tabelas do mysql.

Para recuperar eu normalmente eu executaria o comando:


mysqlcheck -r -u root -psenha --all-databases
mysqlcheck -o -u root -psenha --all-databases

Mas dessa vez foi diferente, o mysql não satisfeito por ter corrompido as tabelas, ele apagou os arquivos MYD e MYI. Ai qualquer arquivo que eu tentava reparar ele me dava a seguinte mensagem:

Error : Incorrect information in file: ‘./database/usuarios.frm’
error : Corrupt

Bom, não consegui em nenhum site na internet a solução para meu problema. E acabei mais tarde descobrindo o sumiço dos arquivos MYD e MYI.

A minha primeira atitude foi desmontar a partição, para preservar os arquivos deletados.


umount /var

Depois procurei alguns programas que recuperassem arquivos na partição ext3, e encontrei o extundelete.

Abaixo vou resumir a instalação dele no CentOS:

Instalando Dependências


yum install e2fsprogs e2fsprogs-libs e2fsprogs-devel gcc-c++

Entrar na pasta temporária:


cd /tmp

Baixar o pacote extundelete:


wget http://sourceforge.net/projects/extundelete/files/extundelete/0.2.0/extundelete-0.2.0.tar.bz2/download

Descompactar:


tar -jxvf extundelete-0.2.0.tar.bz2

Entrar na pasta, configurar e compilar:


cd extundelete-0.2.0/
./configure

Configuring extundelete 0.2.0
Writing generated files to disk


make

make -s all-recursive
Making all in src


make install

Making install in src
/usr/bin/install -c ‘extundelete’ ‘/usr/local/bin/extundelete’

Com o extundelete instalado eu executei o seguinte comando pra recuperar os arquivos do mysql deletados:
Obs: lembrando que os arquivos apagados estavam originalmente dentro de /var/lib/mysql


extundelete /dev/sda2 --restore-directory lib/mysql

Loading filesystem metadata … 917 groups loaded.
Loading journal descriptors … 30467 descriptors loaded.
Searching for recoverable inodes in directory lib/mysql …
157 recoverable inodes found.
Looking through the directory structure for deleted files …
156 recoverable inodes still lost.

Depois eu copiei os arquivos recuperados para o local original e executei o repair da tabela e pronto!


cd RECOVERED_FILES/lib/mysql/database
cp *.MYI /var/lib/mysql/database/
cp *.MYD /var/lib/mysql/database/
mysqlcheck -r -u root -psenha --all-databases
mysqlcheck -o -u root -psenha --all-databases

Pronto problema resolvido! ;D
Espero que com esses passos vocês também possam recuperar seus arquivos…

Até a próxima.

:, , , , ,
1 comment for this entry:
  1. Maicon

    Parabéns pelo post cara!!!

Leave a Reply

Licença

Creative Commons License

Techs

 Blog Tool, Publishing Platform, and CMS
Powered by PHP
Powered by MySQL
Mozilla Foundation
hacker emblem
Mozilla Foundation
Open Source Initiative
Creative Commons