Recuperar datos en EXT3

Diciembre 28th, 2007

Hace unos días tuve la desgracia de presenciar como unos datos de importante valor eran sobreescritos por una mala copia de seguridad, perdiéndose para siempre. Esto me llevó a investigar sobre como recuperar la información y lo cierto es que en un sistema de archivos EXT3 esto es una tarea bastante complicada.

Para los sistemas EXT2 existían varias utilidades capaces de recuperar la información (debugfs era una bastante buena), sin embargo, la forma de trabajar de los sitemas EXT3 (rellena con ceros el puntero hacia el archivo borrado) hace que este tipo de utilidades sean inservibles.

Una vez borrado un archivo la información sigue estando ahí, el problema es que no hay forma de localizarla, no podemos saber donde está, ni como está repartida entre los bloques. Simplemente sabemos que sigue estando en alguna(s) parte(s) del disco duro. Esto es un problema mucho mayor de lo que pudiera parecer ya que no sabemos cuando empieza un fichero y acaba otro, o mucho peor, no podemos saber si el fichero está en un grupo de bloques consecutivos o no. Recuperar archivos binarios en estas condiciones es impensable, sin embargo, recuperar archivos de texto es algo un poco más factible. Quizás no podamos recuperar el archivo como tal, pero sí que podemos leer su contenido y ya que los archivos de texto no suelen ser demasiado grandes, es posible que todo esté contenido en el mismo bloque (es decir, no lo encontraríamos disperso por el disco duro).

La estrategia para conseguir esto es volcar todo el texto de la partición afectada en un fichero y luego examinarlo en busca de las partes que nos interesen. Esto lo podemos conseguir con strings:

# strings /dev/sda7 > /ruta/hacia/archivo

Es recomendable almacenar el volcado en una partición distinta a la que queramos recuperar, ya que si no corremos el riesgo de sobreescribir los datos que estamos intentando salvar antes de haberlos leído.

Espero que esto os sea útil, pero lo mejor es tener las copias de seguridad siempre actualizadas.

Categorías: interesante, linux |

4 comentarios

  1. eduardo

    Yo lo que he hecho alguna vez es desmontar la unidad y luego
    # grep -abi ‘textoquebusco’

    Te vas quedando con los sectores que te interesan y luego los recuperas con un ‘dd’.

    Saludos,
    -Eduardo

  2. shanakadu

    Como siempre tan util, debo indicar que estás como RSS en mi página de inicio de google, así que quiero ver noticias/articulos por un tubo. jejeje. Feliz Año Nuevo.

  3. SynWenn

    Hola Eduardo, la alternativa que planteas es bastante interesante y posiblemente más rápida que el ’strings’, la anoto en mi tomboy :)

    Y Shanakadu, intentaré hacer lo que pueda, pero cada vez tengo más trabajo y menos tiempo :( de todas formas no pienso olvidarme del blog.

  4. Miguel

    Te acabo de comentar un artículo y me estoy quedando de piedra al ver que escribimos sobre temas tan parecidos, es increíble. Da gusto ver que como hay gente con criterio :)

    Bueno, te envío un consejillo para que recuperes más fácilmente ficheros en ext3. Hoy parece que me estoy haciendo autobombo sin parar. Pero creo que te vendrá bien leer esto:
    http://www.infolinuxblog.com/seguridad/recupera-ficheros-borrados-por-equivocacion-en-linux

    Por lo general yo evito dds y recovers de cualquier tipo a mano salvo casos en los que el daño hecho sea tremendo, como formateos.

    Un saludo y quedas añadido a mi blogroll

Deja un comentario