Recuperar archivos borrados en Linux (Tutorial para principiantes)

¿Alguna vez has borrado algún archivo importante por error? ¡Quién no lo ha hecho! Bien, pero ¿se pueden recuperar? En este post, aprenderás a recuperar archivos borrados en Linux usando varios programas en diferentes sistemas de archivos.

Verás cómo recuperar archivos borrados de tarjetas SD, discos duros, y particiones borradas en diferentes sistemas de archivos de Linux como EXT3, EXT4, e incluso de sistemas de archivos de Windows como FAT32 & NTFS.

Tabla de contenidos

Recuperar archivos de una partición eliminada

Esto es todo un problema. A menudo, los usuarios de Linux suelen instalar varios sistemas al mismo tiempo, y pueden eliminar una partición por error durante el proceso de instalación.

Sin embargo, ¿cómo recuperar archivos de esas particiones eliminadas? Para ello, debemos recuperar la partición utilizando una herramienta llamada TestDisk.

Testdisk es una potente utilidad de análisis de particiones y recuperación de datos. La mayoría de las distribuciones de Linux como Debian y Ubuntu vienen con TestDisk.

Por otro lado, la aplicación es multiplataforma y soporta un gran número de tablas de partición como Intel, MSDOS y Mac. Estas son las tablas de partición más populares.

También soporta muchos sistemas de archivos como NTFS, EXT4, y otros sistemas de archivos no populares como BeOS y ReiserFS.

Cuando se elimina un archivo, se borra la lista de clusters ocupados por el archivo, marcando esos sectores disponibles para el uso. Si los clusters no han sido sobrescritos, TestDisk puede recuperar los archivos.

Primero, inicie la aplicación así:

$ testdisk

A continuación, tiene la opción de crear un nuevo archivo para los registros. Si quieres crear uno, elige la opción de crear y pulsa Enter. Si no desea un archivo de registro, seleccione la opción Sin registro.

A continuación, se escanearán los discos o particiones reconocidos por el sistema. En este caso concreto, sda es la partición que queremos recuperar.

TestDisk reconoce varios tipos de tablas de partición. Por lo general, se trata de Intel, a no ser que estés utilizando una especializada.

En la siguiente pantalla, verás una serie de opciones que tiene el programa. Para este caso concreto, debemos elegir la opción Analizar.

Con esta opción, el programa analizará exhaustivamente el disco para encontrar la estructura.

A continuación, te preguntará por el tipo de búsqueda que deseas realizar. Normalmente, elige la opción de Búsqueda Rápida.

Si tienes suerte, verás la partición eliminada. Si no, tendrás que elegir una búsqueda más profunda.

Entonces, elige la opción Write para escribir la tabla de particiones. Cuando termine, reinicie el sistema, y tendrá su partición de nuevo!

Tenga en cuenta que durante estos pasos, puede tardar mucho tiempo. Depende del tamaño del disco.

Según el tipo de sistema de archivos, que pueda tener esta partición, se seguirán instrucciones particulares. Se detallarán más adelante.

Recuperar archivos borrados de un disco externo

Ahora imaginemos que tenemos un pendrive externo, y por error, has borrado algunos archivos de él. Cómo restaurarlos?

Gracias a TestDisk, el proceso se vuelve bastante similar al de una partición eliminada. Pero hay algunas diferencias.

Para iniciar el programa, utilizaremos el comando testdisk. Además, podemos añadir el pendrive como parámetro así:

$ sudo testdisk /dev/sdb

A continuación, seleccionamos proceed. A continuación, elija el tipo de tabla de particiones.

A continuación, seleccione las opciones Avanzadas para recuperar los archivos.

El siguiente paso es seleccionar la partición y la opción Deshacer.

Entonces, verás todos los archivos borrados en la partición.

Ahora, selecciona la carpeta de destino para colocar los archivos recuperados. Debe pulsar C en la primera opción para colocar los archivos en el directorio actual.

Finalmente, verá este mensaje:

¡Felicidades! Archivos restaurados.

Recuperar archivos borrados de la tarjeta SD

Por lo general, en una tarjeta SD, es común notar que se utilizan para archivos multimedia. Por ello, es recomendable utilizar un programa más especializado para estos archivos.

En este caso, utilizaremos la aplicación llamada Photorec que viene incorporada en TestDisk.

Primero, inserta la tarjeta SD en el PC. A continuación, ejecuta photorec como root:

$ sudo photorec 

Entonces, verás la siguiente imagen. Selecciona el medio y procede y presiona Enter.

A continuación, selecciona la partición. Y selecciona Opciones y presiona Enter.

Ahí verás las opciones de recuperación:

Presiona q para volver a la pantalla anterior. Es necesario elegir los tipos de archivos que queremos recuperar. Esto se consigue seleccionando la opción File Opt.

Pulsar la tecla s para seleccionar y deseleccionar todos los formatos. También puede seleccionar los tipos de archivos que desea recuperar con la tecla derecha. Para guardar las opciones seleccionadas, pulse la tecla b. Vuelva al menú principal con la tecla q.

Entonces, en el menú principal, elija la opción Buscar para iniciar el proceso. Y elige el sistema de archivos.

A continuación, te aparecerán dos opciones. Libre y Completo. Normalmente, con Libre es suficiente. Si quieres hacer un análisis profundo, elige Whole, pero ten en cuenta que ralentizará el proceso.

Ahora, es necesario elegir la ubicación donde se guardarán los archivos. Para ello, pulsa la tecla c.

Después de elegir el destino, comenzará el proceso de recuperación. Recuerda que el sistema se colapsará y se congelará. Así que ten paciencia.

Al final, verás un mensaje informando de todo lo ocurrido.

A continuación, comprueba los resultados.

Recuperar archivos borrados de NTFS

NTFS es un sistema de archivos de Windows. Si eres de los que utilizan ambos sistemas en el ordenador, entonces puede que necesites restaurar archivos borrados de una partición de Windows con este sistema de archivos.

Para ello, tenemos una herramienta llamada ntfsundelete que es bastante sencilla de utilizar.

Primero, tienes que escanear el disco o la partición. Por ejemplo:

$ sudo ntfsundelete /dev/sda1

Luego, podremos recuperar el archivo borrado con el siguiente comando:

$ sudo ntfsundelete -u -m 

Los archivos recuperados ahora pertenecen al usuario root. El último paso es cambiar los permisos y propietarios de los archivos usando el comando chown.

Recuperar archivos de FAT32

Otro sistema de archivos común de Windows es FAT32. Puedes recuperar archivos de FAT32 es utilizando TestDisk.

Así que de nuevo ejecuta testdisk como usuario root y pasa el disco como parámetro:

$ sudo testdisk 

Después continúa los pasos descritos anteriormente para restaurar los archivos.

Recuperar en memoria archivos (Usando inode)

Si elimina un archivo que es usado por otro proceso, puede restaurarlo desde la memoria usando inode.

Se deben establecer algunas condiciones iniciales. Primero, el archivo borrado DEBE permanecer abierto por otro proceso. Luego hay que verificar el proceso y finalmente recuperarlo y cambiar sus permisos.

En este caso, crearé un archivo llamado ejemplo.txt usando el editor nano y añadiré algo de texto:

$ nano example.txt

Después guarda los cambios y abre otra ventana de terminal y usa el archivo. Por ejemplo, con el comando less.

$ less example.txt

Abre otra sesión de terminal, elimina el archivo y asegúrate de que se borra:

$ rm example.txt$ ls example.txt

Como puedes ver, el archivo ya no existe. Pero podremos recuperarlo. Para ello, vamos a obtener el número del proceso asociado al inodo del fichero.

$ lsof | grep example.txt

Observarás el proceso y el comando que está utilizando el fichero (el comando less). De esa imagen, tenemos que prestar atención al segundo y cuarto valor. Estos son el PID del proceso y el descriptor del archivo respectivamente.

Entonces, recupéralo con el siguiente comando:

$ ls -l /proc/2325/fd/4

Después, cópialo en la ubicación que quieras, y con eso es suficiente para recuperarlo.

$ sudo cp /proc/2325/fd/4 .

A continuación, comprueba los resultados y abre el archivo:

De esta forma, podemos recuperar un archivo borrado que aún esté en memoria y sea utilizado por un proceso con el inodo.

Recuperar archivos borrados de EXT4 (usando extundelete)

EXT4 es el sistema de archivos por defecto en la mayoría de las distribuciones de Linux. Es bastante rápido y con características técnicas muy bien aprovechadas por el kernel de Linux.

Una de las herramientas utilizadas para recuperar archivos del sistema de archivos EXT4 es extundelete.

Extundelete es una aplicación de código abierto que permite recuperar archivos borrados de una partición o un disco con el sistema de archivos EXT3 o EXT4. Es sencillo de utilizar y viene por defecto instalado en la mayoría de las distribuciones de Linux.

Para recuperar un determinado archivo, basta con utilizar el siguiente comando:

$ sudo extundelete -restore-file 

Por ejemplo:

$ sudo extundelete /dev/sdb1 -restore-file home/angelo/other.txt

Si quieres recuperar todos los archivos de una carpeta, utiliza el carácter comodín:

$ extundelete /dev/sda6 -restore-file home/angelo/*

Pero si quieres restaurar todos los archivos de la partición o del disco, el siguiente comando sería suficiente:

$ extundelete /dev/sda6 -restore-all

Así, los archivos recuperados estarán en el directorio RECOVERED_FILES. Así que de esta manera, puedes recuperar archivos borrados usando extundelete.

Usando debugfs

También es posible usar la herramienta debugfs para recuperar archivos borrados. Esta herramienta también utiliza el número de inodo del archivo eliminado. Sin embargo, sólo funciona en sistemas de archivos EXT4.

Su funcionamiento también es bastante sencillo. En primer lugar, hay que introducir la partición o el dispositivo.

$ debugfs 

Por ejemplo,

$ sudo debugfs /dev/sdb1

Después, al cabo de un rato, podrás entrar en la consola de debugfs para buscar los archivos eliminados recientemente.

$ debugfs: lsdel

En la primera columna, verás el número de inodo de los archivos borrados en ese dispositivo. Luego, restaura con el siguiente comando:

$ debugfs mi <inode_number>

Y ya está. Es bastante fácil.

Usando ext4magic

Otra forma alternativa de recuperar archivos borrados en un disco con sistema de archivos Ext4 es usar Ext4magic. Esta aplicación también es bastante sencilla de utilizar.

La sintaxis más básica de la aplicación es la siguiente:

$ sudo ext4magic -f -r -d 

Si quisiera recuperar los archivos borrados de una carpeta llamada files, el comando sería similar a este:

$ sudo ext4magic /dev/sdb1 -r -d files

Así de fácil es usar ext4magic. Todo ello gracias a que Ext4 es un sistema de archivos comunitario y de código abierto.

Recuperar archivos sobrescritos (Usando Scalpel)

Scapel es otra herramienta de código abierto que permite recuperar archivos de unidades formateadas, sobrescritas e incluso dañadas. Es muy conocida por su rapidez y eficacia. En este sentido, surge como una alternativa a tener en cuenta.

Scalpel talla los archivos sin la ayuda de los sistemas de archivos. Trata de extraer las cabeceras y pies de página de los archivos e intenta adivinar toda la estructura de los mismos mediante unos algoritmos bien diseñados.

Al igual que TestDisk, está disponible en los repositorios oficiales de la mayoría de las distribuciones de Linux. Por lo tanto, su instalación se reduce al uso del terminal y del gestor de paquetes de la distribución.

La forma más rápida y sencilla de utilizar Scapel es la siguiente:

$ scalpel -o 

La carpeta_de_salida especifica dónde colocará scapel todos los archivos recuperados. Tenga en cuenta que Scalpel creará el directorio de salida por sí mismo.

¿Pero cómo sabe Scapel qué archivos recuperar? Pues eso se define en el archivo de configuración de la aplicación.

Este archivo de configuración suele estar en la siguiente ubicación:

/etc/scalpel/scalpel.conf

Y puedes abrirlo con tu editor de texto favorito, y ahí sólo tendrás que descomentar las líneas para definir los formatos de archivo a buscar.

Los formatos de archivo que descomentes, Scalpel los buscará.

Luego, ejecuta el comando Scalpel completo, y en la carpeta de salida, verás los archivos recuperados.

$ sudo scalpel /dev/sdb1 -o recovered_files1

A veces, Scalpel restaura partes del archivo. Eso depende de la salud de la unidad y de la cantidad de datos que se hayan corrompido.

Además, hay muchos algoritmos de craving que se pueden utilizar, pero aquí comentamos la forma básica de craving de datos.

Recuperar archivos de un sistema no arrancable

Este es un caso delicado porque necesitamos acceder desde un Live cd de Ubuntu u otra distribución de Linux similar. Una vez tengamos el arranque, podríamos utilizar TestDisk para intentar recuperar los datos.

En este caso, tendríamos que utilizar un disco externo donde guardar los datos. Por otro lado, en caso de que TestDisk no pueda hacer el trabajo, también podemos probar con extundelete o ext4magic siempre y cuando la partición sea Ext4.

Si no funciona, se podría intentar regenerar la partición usando TestDisk como se ha explicado anteriormente.

Conclusión

Es posible borrar archivos accidentalmente. La idea es conocer las herramientas y técnicas adecuadas para recuperar estos archivos.

En este post, hemos cubierto varias circunstancias y diferentes sistemas de archivos que podrían ayudar a evitar estos problemas.

Sigue viniendo.

Gracias.

Fundador de LikeGeeks. Trabajo como administrador de sistemas Linux desde 2010. Soy responsable del mantenimiento, la seguridad y la resolución de problemas de servidores Linux para múltiples clientes en todo el mundo. Me encanta escribir scripts de shell y Python para automatizar mi trabajo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *