Como recuperar archivos borrados en GNU/Linux

03 julio 2012
 ¿Quien no ha eliminado sin querer algún archivo incluso de la papelera para darnos cuenta luego que no debíamos tirarlo? o peor aún, algunos tenemos la costumbre de no pasar por la papelera. O se nos pierden fotos de nuestra cámara o la información que tenemos en ese pendrive que llevamos de un lado a otro.

Pues bien para estos u otros casos en GNU/Linux tenemos varias herramientas para intentar recuperar esos preciados datos. En esta entrada hablaremos de dos de ellas, para utilizarlas según sea el caso.

Preparé un pendrive al que le eliminé la partición, luego hice una ext3, la borré también y cree otra Fat32, copie unas imágenes jpg y luego las borre como se puede ver en las siguientes capturas:




Antes de explicar el uso de las herramientas de recuperación, vamos a ver como identificar de manera sencilla cual es el punto de montaje del dispositivo del cual queramos recuperar los datos, luego veremos por que necesitamos saber esto.
Tenemos varias maneras de saber esto, sin embargo para hacerlo de manera gráfica vamos a usar Gparted, un gestor de particiones que viene instalado en muchas distribuciones basadas en Debian.
En Ubuntu 12.04 no está instalado por defecto asi que abrimos una terminal y lo instalamos:
sudo apt-get install gparted
Si por ejemplo queremos rescatar datos de un pendrive o memoria lo/a conectamos ahora.
Desde el dash lanzamos Gparted, nos pedirá la contraseña de super usuario y veremos una imagen similar a la siguiente:


Como se puede ver nos muestra el dispositivo /dev/sda (en este caso) que es un disco duro y dentro tiene las siguientes particiones: sda1, es una partición ntfs donde tengo Window$, sda2 es ext4 donde está mi home, sda3 también ext4 es el punto de montaje del sistema, sda4 que es el swap y una porción sin formato.
Si nos fijamos en la parte superior a nuestra derecha, al lado del dispositivo, tenemos una flechita para cambiar el mismo, para por ejemplo buscar el pendrive conectado.


Vemos entonces que el dispositivo correspondiente a el pendrive (nos damos cuenta por el tamaño) es sdb y como podemos corroborar dentro está la partición sdb1.
Anotemos estos datos.

Ahora que ya sabemos como se llama el dispositivo y la partición desde donde queremos recuperar datos, si vamos a centrarnos en como recuperar esos archivos borrados.
La primera herramienta y mas potente que vamos a usar es Photorec.
Como el post ya es muy largo voy a obviar como trabaja el programa para centrarnos en su uso práctico, pero si quieren pueden ver mas aquí.

Vamos a instalarlo desde una terminal:
sudo apt-get install testdisk

El software no tiene interfaz gráfica y está en ingles, sin embargo tranquilos que es bastante fácil de usar. Vamos nuevamente a la terminal y ejecutamos:
sudo photorec


Tras pedirnos la contraseña veremos una ventana como la que sigue:

En este primer paso nos pregunta de que dispositivo deseamos recuperar datos (para eso es que vimos como saber el punto de montaje al principio) seleccionamos el deseado, en este caso el pendrive que corresponde para el ejemplo a sdb y damos enter.



En esta segunda ventana nos pregunta la partición del pendrive (en este caso) desde la que queremos recuperar, como en el ejemplo tenemos una sola (la que vimos como sdb1) le damos enter.


Ahora pregunta donde guardaremos los datos recuperados, es conveniente haber creado en nuestra carpeta personal con anterioridad un directorio para este fin, nos movemos con los cursores hasta el directorio deseado y presionamos C

Dejamos como está y nuevamente presionamos C



En este momento se pondrá a trabajar como podemos ver...


Cuando termina nos muestra un pequeño informe con los archivos que recuperó, nada menos que 1302

Ahora bien, como el programa trabaja como super usuario no tendremos permisos para mover, copiar o eliminar los datos recuperados. Cuando entremos al directorio veremos algo así:



Para solucionar esto vamos una ves mas a una terminal y para el ejemplo pondremos esto:
sudo chmod -R 777 /home/yeti/recuperados

Donde /home/yeti/recuperados es la ruta al directorio donde se encuentran los archivos, tu debes cambiarla según tu usuario y el directorio que elegiste para guardarlos.
Entonces nos debe quedar así:



Como se puede apreciar ya no tenemos los símbolos que indican la falta de permisos.
Les dejo unas capturas de el contenido de los directorios:



Como pudieron ver a pesar de haber formateado varias veces recuperó nada menos que 1302 archivos. ¿Nada mal verdad?

 ACTUALIZACIÓN
Según las pruebas que realice, aunque le digamos a Photorec que guarde en un directorio x de todas maneras crea el directorio recup_dir,1 en nuestra carpeta personal y es allí donde guarda lo recuperado. Como seguramente recuperaremos archivos de distinto tipo puede ser un caos a la hora de verlos y clasificarlos, entonces vamos a ordenarlos automáticamente por su extensión  en distintos directorios.
Para esto nos vamos a ayudar con un script en phyton que descargaremos desde aquí  , luego descomprimimos el archivo en nuestra carpeta personal (es importante que sea en la carpeta personal para facilitar las cosas)
Creamos en la carpeta personal un directorio, por ejemplo "ordenados" (sin comillas)
Abrimos un terminal y pegamos lo siguiente:

python recovery.py /home/usuario/recup_dir.1 /home/usuario/ordenados

Donde "usuario" es tu nombre de usuario "recup_dir.1" es el directorio donde Photorec guardó lo recuperado y "ordenados" es el directorio que creamos para tener todos esos archivos ordenados en sub directorios por extensión.
Luego de ejecutar esto ya tendremos todo bien ordenado por tipo de archivo.

 Otra alternativa es Foremost (Forensic data recovery)también trabaja desde la línea de comandos y da buenos resultados.

Para instalarlo ejecutamos en una terminal:
sudo apt-get install foremost

Foremost puede recuperar datos en los siguientes formatos: avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip

Para indicar los tipos de archivo que queremos recuperar, pondremos la opción “-t” seguida de las tipos de archivo que queramos recuperar separados por comas, o “all” si queremos recuperar todos los tipos soportados.

Estas son algunas de las opciones de Foremost:

-h, muestra la ayuda y sale
-v, muestra la versión y sale
-T, añade la fecha al directorio donde quieres guardar los archivos recuperados
-v, muestra la salida de datos
-q, modo rápido
-Q, modo silencioso
-w, escribe solo la el fichero donde informa de lo que se puede recuperar pero sin recuperar nada
-i, la partición que queremos escanear
-o, el directorio de salida


Para el ejemplo vamos a utilizar el mismo pendrive desde donde recuperamos anteriormente con Photorec, pero esta ves solo vamos a intentar la recuperación de archivos jpg y png.
Veamos entonces el comando a utilizar para el ejemplo:
sudo foremost -v -T -t jpg,png  -i /dev/sdb1 -o /home/yeti/recuperados/

Donde "-v" es para que nos muestre la salida, "-T" le añade la fecha al directorio donde guardamos los datos recuperados, "-t jpg,png" le dice que tipo de archivos recuperar, "-i /dev/sdb1" la partición donde se encuentran los datos a recuperar y "-o /home/yeti/recuperados/” el directorio donde se guardaran los archivos recuperados.

Los archivos no se guardaran en “recuperados”, sino en “recuperados” seguido de la fecha, tal como elegimos cuando pusimos la opción "-T".

Ten en cuenta que /dev/sdb1 es la ruta al pendrive en mi maquina y /home/yeti/recuperados/ es la ruta de salida para los archivos recuperados en mi computadora, tu deberás poner ambas rutas según la partición desde donde desees recuperar (para saberlo ve al principio del post)y la ruta a donde quieras guardar los datos recuperados.

Recuerda además que como con Photorec, al trabajar como super usuario no tendremos permisos sobre los archivos recuperados y deberás cambiar los permisos para poder manipular los archivos, para el ejemplo:
sudo chmod -R 777 /home/yeti/recu_Tue_Jul__3_20_00_18_2012

Debes cambiar /home/yeti/recu_Tue_Jul__3_20_00_18_2012 por la ruta a donde se encuentran los datos recuperados.
 
En las siguientes capturas podemos ver el programa trabajando y los directorios con los archivos recuperados.



El resultado de la recuperación con Foremost:



En definitiva si queremos algo bien potente y recuperar todo tipo de archivos la mejor opción es Photorec y si queremos recuperar imágenes, o alguno de los tipos soportados por Foremost, esta es tu opción.

Te gustaría seguir este blog?

24 comentarios:

  1. Genial. Siempre con buenos datos usted. Saludos

    ResponderEliminar
  2. Gracias Pablo, nunca falta la oportunidad de recuperar algo de una memoria o pendrive sobre todo.
    Saludos

    ResponderEliminar
  3. Hola Pablo:

    Me sirivió muchisimo este artículo, pero ahora no se como usar photo rec sorter, según leo es para acomodar los archivos de acuerdo a su nomenclatura, soy nuevo en esto de linux y me gusta, aunque sinceramente desconozco muchas cosas, me podrías decir la linea de comandos para ejecutar photorec sorter y así poder clasificar los archivos, por tu ayuda, mil gracias, Alejandro

    ResponderEliminar
  4. Alejandro si miras te darás cuenta que actualice la entrada y al final de la parte de Photorec pongo como hacer lo que quieres.
    Saludos

    ResponderEliminar
  5. Espectacular, muchas gracias.
    me sirvió =D

    ResponderEliminar
  6. Veamos si me pueden ayudar.
    Tuve un virus en el disco rígido de una máquina que me inhabilitó por completo el acceso al mismo.
    No obstante y haciendo de todo, logré hacer un backup en un disco externo de 3 TB donde tenía espacio excedente.
    Luego de ésto e intentando recuperar el rígido de la PC, intenté darle formato con Ubuntu.
    Arranqué desde el disco de instalación y éste comenzó el proceso.
    En un momento me sale un cartel preguntándome si quiero hacer una partición "del disco externo" que tontamente había olvidado desconectar.
    En ese momento apagué la máquina y retiré el disco externo.
    Cuando lo conecto a otra máquina e intento acceder al mismo, el sistema me informa que no está formateado y me propone formatearlo.
    Obviamente dije que no.
    Luego, mirando los discos instalados en la máquina, veo que se cambió de NTFS a RAW con lo que ya no pude acceder mas al disco externo.
    En esa unidad está mi vida metida adentro y quisiera rescatarla de algún modo.
    Pregunto: Si arrancara desde un rígido que tengo donde está cargado Ubuntu, podría ver desde ese rígido el contenido del otro que tiene cambiada la FAT ? O debo dar por perdida toda la información en él contenida definitivamente ?
    Gracias por leer este post y agradeceré una ayuda.

    ResponderEliminar
  7. Excelente artículo! Gracias, Pablo!
    ...Por favor, ma dice si hay forma de recuperar archivos borrados conociendo la fecha en la que fueron eliminados?

    ResponderEliminar
  8. GRACIAS X EL APORTE.. SALU2

    ResponderEliminar
  9. «sudo apt-get install gparted»

    Válgame el señor... ¿No será más fácil un simple fdisk -l desde la consola que instalarse toso un programa gráfico y aprender a usarlo?

    Saludos.

    ResponderEliminar
  10. que diferencias hay entre foremost y photorec??? Por lo que veo photorec tiene mas archivos soportados y puedes escoger los formatos que desees

    ResponderEliminar
  11. hola, lo que pasa es que formateé mil veces mi memoria usb, me interesaría saber si hay algún método para recuperar hasta lo más inimaginable, de igual forma formateé mil veces el disco duro, al principio no me importó pero ahora extraños mis archivos, los necesito, me encantaría una ayuda.

    ResponderEliminar
  12. Lamentablemente si haz formateado varias veces y vuelto a escribir en la partición probablemente no puedas recuperar lo que quieres, cuando tu eliminas un archivo en realidad le estás diciendo al sistema que el espacio está disponible para ser usado, por eso cuando se borra algo accidentalmente no se debe guardar mas nada antes de pasar una utilidad como photorec, para que no se sobrescriba con otra cosa el espacio donde estaban esos datos. De todas maneras prueba hacer lo que dice aquí, a lo mejor te llevas una sorpresa y puedes rescatar algo de lo viejo.

    ResponderEliminar
  13. buenas como elimino la carpeta a donde estan los archivos recuperados

    ResponderEliminar
  14. Debes navegar hasta la carpeta como super usuario si usas gnome escribe en una terminal: sudo nautilus la buscas y puedes borrarla, hazlo con shift+supr para que la elimine definitivamente.
    Si usas otro entorno deberás poner sudo (nombre del administrador de archivo que uses) el procedimiento es el mismo. por ejemplo en xfce es: sudo thunar

    ResponderEliminar
  15. gracias eso me fue de utilidad

    ResponderEliminar
  16. HAY Y SI NO CREE ESA DICHA CARPETA COMO HAGO PARA QUITARLES EL PERMISO ?

    ResponderEliminar
  17. Hola:

    Se pueden recuperar archivos borrados hace casi 1 año??? o no hay tiempo limite??

    gracias

    ResponderEliminar
    Respuestas
    1. Tiempo limite no hay, el problema es que cuando borras un archivo en realidad este no se borra físicamente del disco pero se hace ver que el espacio está vacío para escribir nuevos datos en el mismo. Por eso lo ideal cuando borramos algo sin querer es no hacer mas nada en la computadora hasta haber intentado recuperar esos datos, si tu seguiste usando la maquina todo ese tiempo con ese disco, pendrive o lo que sea y guardaste datos en esos espacios lo mas probable es que no puedas recuperar nada. Pero bueno nada cuesta probar a ver que pasa.
      Saludos.

      Eliminar
  18. Hola:
    Para recuperar foto y videos borrados cual es el mejor ??' Gracias

    ResponderEliminar
  19. genial, pude salvar fotos de mi disco duro que estaba en NTFS que no pude montar a pesar de las guias y tutoriales

    ResponderEliminar
  20. Que excelente post, hoy voy a ponerme las pilas y probar las técnicas de data recovery en mi plataforma de Ubuntu.

    ResponderEliminar
  21. ya en casos muy especiales que no puedan les recomiendo fixdata, hacen de todo pero se especiliza mas en disco duros y recuperacion de datos

    ResponderEliminar