Publi

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:

  • -a : Nos permite buscar dentro de ficheros binarios, en este caso es un dispositivo, pero su información no es de texto siempre.
  • -A100 : Cuando encuentre lo que buscamos, cogerá el texto desde 100 filas antes.
  • -B100 : Cuando encuentre lo que buscamos, cogerá el texto hasta 100 filas después.
  • -i : No diferencia mayúsculas de minúsculas
  • ‘SELECT `elemento` FROM `Tabla`’ este es el texto que queremos buscar, entre comillas simples, si es corto, lo más seguro que encontremos muchas coincidencias, y luego tendremos muchos contenidos, eso sí, debe ser preciso, exactamente igual que lo que está escrito en el archivo
  • /dev/sda4 : El dispositivo donde buscamos.
  • /tmp/recuperados.txt : El archivo donde vamos a escribirlo, deberá ser en un dispositivo diferente a donde estamos buscando

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....

There are 5 comments left Ir a comentario

  1. hexborg /
    Usando Mozilla Firefox Mozilla Firefox 20.0 en Windows Windows XP

    Si me permites un consejo, te recomiendo poner en el .bashrc la siguiente linea:

    set -o noclobber

    De esta manera, bash no te dejará redirigir la salida de un comando hacia un fichero que ya existe a no ser que uses >>. Para que te deje tendrías que escribir el comando así:

    mysql -uroot -pMICLAVE > consultas.sql

    Una medida muy útil. Échale un vistazo a esto: http://www.cyberciti.biz/tips/howto-keep-file-safe-from-overwriting.html

    Un saludo.

    1. admin / Post Author
      Usando Mozilla Firefox Mozilla Firefox 21.0 en Ubuntu Linux Ubuntu Linux

      Muy buen consejo, desconocía ese modificador. Muchas gracias!

  2. Pingback: Bitacoras.com /

  3. Pingback: BITes: Ray Tomlinson, Skype se rompe, seguridad, SSD de 15Tb!! ordenadores en ciencia ficción, eliminar de forma segura – Poesía Binaria /

  4. Shining Jacket /
    Usando Google Chrome Google Chrome 120.0.0.0 en Windows Windows NT

    Awesome blog. I have read and thought about what you said. I have bookmarked it and I am looking forward to reading new articles. Keep up the good work!

Leave a Reply to admin Cancle Reply