Seguramente hayáis borrado alguna vez algún archivo por equivocación en vuestro Linux y después soltado alguna maldición al daros cuenta. Es sabido que recuperar ficheros borrados en Linux es mucho más difícil que en Windows. Sin embargo, hoy explicaré cómo recuperar ficheros borrados fácilmente, primero sin usar la temida consola y luego con ella. Primero un poco de contexto para entender el asunto a fondo.
Aunque cuidado con que sacáis de las papeleras, ¡que podéis encontraros de todo!

¿En qué consiste la operación de borrado?
Bueno, pues mucha gente borra cosas en su ordenador sin entender muy bien qué hace el ordenador con esos datos. ¿A dónde van? Una explicación sencilla que se suele dar para explicar esto, es que un ordenador funciona como un libro que tiene un gran índice que se puede ir editando. El índice indica la página donde se guardaran los datos. Así el sistema operativo indexa y maneja los datos. Cuando quiere borrar algo, no arranca la página, ni la tacha, simplemente borra la entrada del índice. Así cuando toque utilizará esa página de nuevo reescribiendo encima.
Cierto es que este comportamiento depende de una capa lógica denominada filesystem o sistema de ficheros. Sí hombre, si usas Linux esto te tiene que sonar: ext3, reiserfs… En el ejemplo anterior, los sistemas de ficheros se podrían considerar unas reglas y estándares que indican qué información debe aparecer en el índice, como editar las páginas…
¿Por qué es más difícil recuperar ficheros en Linux que en Windows?
El sistema de ficheros de Windows, centrándonos en NTFS, está hecho para cubrir el error humano del usuario, no se sabe si por casualidad o como feature que diría Microsoft. El caso es que cuando se borra la entrada del índice, por así decirlo, se puede leer lo que había escrito antes si miramos fijamente. Mientras que en Linux esto no ocurre.
La explicación técnica para el que quiera leerla, es que por ejemplo ext3 rellena con ceros todos los punteros de bloques del i-nodo correspondiente al fichero. Característica que no tenía el sistema de ficheros del que evoluciona ext2. Por eso en ext2 resulta mucho más sencillo recuperar datos borrados, utilizando una herramienta llamada debugfs. Sin embargo, esta característica no está puesta por los desarrolladores con mala leche, sino para evitar problemas con el journal cuando el sistema se cuelgue o apague por cortes luz.
¿Podré recuperarlo todo?
Hombre, tampoco es que esto sea Renault ocasión, si la página ha sido reescrita, es decir, si los bloques donde estaba el fichero han sido reutilizados, recuperarlo queda fuera de técnicas software. Sin embargo, resulta sorprendente la cantidad de información que puede salvarse incluso después de un formateo (esta es otra historia que pronto os contaré).
GRESCUE
Estaba yo lamentando la calamidad de haber borrado un trozo de una práctica para la Universidad, cuando en Gnome files di con una
herramienta de nombre Grescue, poco conocida. Grescue es una interfaz gráfica (GUI) para un programa llamado magicrescue.
Magicrescue es un programa de línea de comandos capaz de recuperar datos de cualquier sistema de ficheros. Para ello utiliza los magic numbers (que son combinaciones binarias que tienen los ficheros según de qué tipo sean que los identifica de forma única) y llama a otros programas para recuperar los trozos reconocidos. No es tan efectivo como una recuperación manual, pero si lo suficiente en la mayoría de los casos. Este software no funciona demasiado bien en sistemas de ficheros demasiado fragmentados, pero esto no suele ser un problema ya que es poco común.
En la página oficial de este software libre podremos acceder al código y otros detalles. Para aprender a utilizarlo el mejor manual es su página man, pero gracias a grescue no será necesario.
INSTALACIÓN Y FUNCIONAMIENTO
Grescue tiene pocas versiones y está en fase beta, preliminar, pero resultará fácil instalarlo y sacarle provecho, creedme. En su página de desarrollo de google code, podremos bajarnos el código, un .deb o un binario. Para instalarlo nos descargamos el .deb para Ubuntu/Debian de aquí y luego en una consola hacemos:
sudo apt-get install magicrescue
sudo dpkg -i /ruta/descarga/grescue_0.1.2~welemski1_i386.deb
Una vez hecho esto tendremos un icono en “Aplicaciones >> Herramientas del sistema >> GRescue”.

La interfaz no es muy comercial pero es efectiva. Esta es la primera ventana que nos aparecerá:

Pincharemos en el botón inferior derecho que dice “Start Rescue” o “Comenzar Rescate” y nos aparecerá una ventana donde configurar los parámetros que queremos recuperar:

En mi caso quiero recuperar todas las imágenes png de mi partición home que haya borrado y que las ponga en el directorio /home/miguel. Ahora bastará con darle al start y esperar, puede que tu máquina se ralentice un poco, es normal piensa que está barriendo el dispositivo a nivel de bloque.
Si salta algún error, deberás estudiarlo, puede que necesite otras aplicaciones que no tengas instaladas para recuperar el fichero que haya encontrado. Por ejemplo, para recuperar .avis tendremos que tener instalado mencoder.
sudo apt-get install mencoder
Cuando acabe, aparecerá todo lo que ha recuperado que encaje con la descripción en el directorio que hayamos especificado.
Otras técnicas y programas
Un día pienso dedicar un artículo entero a lo que sería una recuperación manual al completo, así que este tema queda pospuesto. Sin embargo, magicrescue no es la única opción que disponemos en Linux para recuperar ficheros. Podemos buscar una solución de software específica para nuestro sistema de ficheros. Así pues, si utilizamos ext3, bastarías con buscar en google “undelete ext3″ (undelete es la palabra en inglés para recuperar ficheros borrados). El caso es que la mayoría de estos programas, suelen estar en fase beta (preliminar) o alfa, y suelen ser de línea de comandos.
PARA PROFUNDIZAR. SI NO TE ASUSTA LA LÍNEA DE COMANDOS
La recuperación de datos se considera una técnica de análisis forense (una rama de la seguridad que analiza un equipo después de que su seguridad haya sido comprometida). En inglés el término es “data carving” y destacan tres herramientas:
- Foremost: Una aplicación de línea de comandos muy potente.
- Photorec: Un software libre y gratuito multisistema orientado a recuperar contenido multimedia de memorias portátiles, discos duros y cds. En su wiki disponéis de un manual paso a paso sobre su uso.
- Sleuthkit: Una herramienta muy completa de análisis forense que se utiliza en entornos profesionales. En un charla de David Barroso de Secuware en mi Universidad mencionó que utilizaban esta aplicación. El problema es que es demasiado completa y grande para solo recuperar ficheros fácilmente. Existen diversas GUIs que trabajan de wrappers de este software por Internet.
Si conocéis alguna otra alternativa interesante, sencilla o potente espero que me la recomendéis.

dorje Comenta:
January 17th, 2008 a las 10:28 pm
Hola,
Al intentar descargar el .deb para Ubuntu/Debian va ok, pero a la hora de instalar da error!
error: Dependency is not satisfiable: magicrescue
Miguel Comenta:
January 18th, 2008 a las 12:26 pm
Hola dorje:
¿Has leído bien los comandos de instalación? ¿Qué ocurre cuando hace “sudo apt-get install magicrescue”?
Martin Comenta:
January 18th, 2008 a las 3:36 pm
Excelente informe.
Muy completo.
Saludos.
SynWenn Comenta:
February 1st, 2008 a las 10:15 am
Interesante artículo, normalmente no suelo usar las GUI para estos temas, pero le echaré un ojo al ‘magicrescue’ y al ‘grescue’. También me ha gustado la lista de utilidades adicionales que das al final.
Buen artículo, te añado a mi blogroll.
josekont Comenta:
February 11th, 2008 a las 3:17 am
Excelente articulo amigo, muy completo y muy elaborado. Gracias por la información ya que uno no sabe en que momento puede perder un dato importante accidentalmente.
Saludos!
Como recuperar ficheros borrados por accidente en Linux « ObuX hecho por JoseKont Comenta:
February 26th, 2008 a las 3:39 pm
[…] Recuperar ficheros borrados en Linux […]
Enio Comenta:
March 7th, 2008 a las 5:56 am
@dorje: asi puedes ver las dependencias de tus programas a instalar desde consola: apt-cache depends “programa”, en este caso seria: apt-cache depends magicrescue… por cierto me gusto mucho este post… lo probare en unos instantes… exitos en todo.
magnolia Comenta:
June 20th, 2008 a las 6:15 pm
Este software no funciona sino con extenciones pero le hace falta .php
DinoBo0t Comenta:
June 25th, 2008 a las 9:50 pm
KE ONDA DONDE ESTA LA PARTE DONDE EXPLICAN, PRA DESPUES DEL FORMATEO?????????????????????????????????????????????????????????????????
?????????????????????????????
?
?
?
?
?
??
??
??
?
?
‘
??
anna Comenta:
July 6th, 2008 a las 11:01 pm
eSlILX gghjyuy