Poesía Binaria

Acabo de borrar un archivo por accidente ! ¡ Voy a morir ! ¡ No aún no !

El título está basado en un hecho real, aunque casi casi el truco que pondré a continuación está limitado a archivos de texto, ya que podemos identificar fácilmente su contenido. Si me apuráis, valdría con cualquier tipo de archivo, pero los archivos binarios, raramente podemos saber con exactitud qué contienen.

Me encontraba yo preparando una entrada de datos para base de datos, fue un archivo que me llevó un tiempo donde hacía numerosas consultas, y llega la hora de hacer la consulta, de estas veces que puede que por el cansancio, por tener un día un poco tonto, por no pulsar bien una tecla, o un lapsus, en lugar de:

$ mysql -uroot -pMICLAVE < consultas.sql

se me ocurre escribir:

$ mysql -uroot -pMICLAVE > consultas.sql

vamos, que el archivo con el que llevaba ya un rato se borró por completo, y yo me encontraba como la foto de portada.

Pero bueno, eso no era más que un reto más, podíamos intentar recuperar el contenido, ya que cuando borramos un archivo así, con rm, o incluso después de un formateo, los datos siguen ahí, sólo están catalogados como espacio libre; por eso, tenemos que tener cuidado de no escribir nada en disco mientras no se recupera la información.

En la actualidad hay aplicaciones como photorec (la cual me ha salvado la vida innumerables veces), pero necesitan de mucho tiempo y recuperan todo lo recuperable, luego hace falta tirarse mucho tiempo explorando los archivos recuperados para ver cuál me interesaba.

Pero esta vez, había prisa, al principio intenté:

$ sudo less -f /dev/sda4

Mi problema estaba en la partición /dev/sda4 . El modificador -f es para abrir ficheros que no son normales, como un dispositivo, como es el caso. Aunque hubo otro problema más adelante, less se comía toda la memoria RAM del ordenador, y no llegué a recorrer por completo el disco, por lo que no logré recuperar la información.

Tras eso, hice una prueba, un poco más elegante y un tanto más rebuscada, la siguiente:

$ grep -a -A100 -B100 -i ‘SELECT `elemento` FROM `Tabla`’ /dev/sda4 > /tmp/recuperados.txt

Adelantar que sí tuve éxito de esta forma, vamos a comentar un poco cada argumento:

Tras unos 20 minutos, tenía un archivo recuperados.txt con un montón de datos, y más o menos con un vistazo desde un editor de texto logré extraer la información que había perdido.

También podría interesarte....