Cómo recuperar archivos borrados en Linux con testdisk

Una ilustración de una ventana de terminal en una computadora con Linux.
Fatmawati Achmad Zaenuri / Shutterstock

¿Alguna vez borró un archivo y se arrepintió instantáneamente? ¡Lo necesitas de vuelta, y rápido! Pero, ¿qué pasa si el archivo es tan nuevo que aún no se ha realizado una copia de seguridad? Afortunadamente, hay algo que puedes hacer al respecto.

rm: ¿Corto de remordimiento?

Es muy fácil usar el rmcomando  y encontrarse mirando una ventana de terminal con un sentimiento de pesar cada vez más profundo. Un pequeño error con los comodines y puede borrar mucho más de lo que pretendía.

El sistema de archivos predeterminado de Linux  ext4 utiliza inodos para almacenar datos sobre cada archivo y una tabla de inodos para realizar un seguimiento de los inodos. El inodo contiene metadatos sobre el archivo, como su nombre, quién lo posee, cuáles son los permisos, etc.

También contiene puntos de entrada a enlaces físicos que apuntan al archivo. Cada archivo tiene al menos un vínculo físico. Cada vez que crea un nuevo vínculo físico, el recuento de vínculos físicos aumenta en uno. Cada vez que elimina un enlace físico, el recuento de enlaces físicos en el inodo se reduce en uno.

Cuando elimina un archivo que el inodo ha marcado como no utilizado (y listo para su reutilización), se elimina el último enlace físico. Cuando esto sucede, el archivo no aparecerá en las listas de directorios y no se puede utilizar ni acceder a él.

Sin embargo, los datos que componen el contenido del archivo todavía están presentes en el disco duro. Sin embargo, si pudiera parchear el inodo para que contuviera la información correcta, el archivo se restauraría. Por supuesto, esto solo funcionaría si los datos que componen el archivo en el disco duro permanecen intactos y no se sobrescriben.

Alternativamente, puede crear un nuevo inodo, copiar los datos supervivientes del antiguo inodo y luego reemplazar los bits que faltan.

Esas son actividades no triviales. Por lo general, cuando elimina un archivo por error, es en el peor momento posible. Siempre es cuando necesita ese archivo y lo necesita ahora. No tiene tiempo para ensuciarse con los editores de sector y otras utilidades. Además, si se trata de un archivo que acaba de crear, es probable que aún no se haya realizado una copia de seguridad, por lo que tampoco le ayudarán.

Relacionado:  ¿Cuánto valen sus datos para los anunciantes?

Aquí es donde testdiskentra en juego. Es fácil de usar y no requiere un conocimiento detallado y de bajo nivel del sistema de archivos. ¡Echemos un vistazo a cómo usarlo!

Instalación de testdisk

Para instalar testdisken Ubuntu, use este comando:

sudo apt-get install testdisk

sudo apt-get install testdisk en una ventana de terminal.

En Fedora, debe escribir:

sudo dnf instalar testdisk

sudo dnf instala testdisk en una ventana de terminal.

En Manjaro, debes usar pacman:

sudo pacman -Sy testdisk

sudo pacman -Sy testdisk en una ventana de terminal.

Usando testdisk

Aunque se ejecuta en una ventana de terminal,  testdisktiene una interfaz rudimentaria. Utiliza las teclas de flecha para navegar y Enter para hacer una selección. Para mantener las cosas ordenadas, es mejor crear un directorio para los archivos restaurados.

Escribimos lo siguiente para crear un directorio llamado «restaurado» para nuestros archivos restaurados:

mkdir restaurado

mkdir restaurado en una ventana de terminal.

Escribimos lo siguiente para cambiar al nuevo directorio y comenzar testdiskdesde allí:

cd restaurado /

cd restaurado / en una ventana de terminal.

Tenemos que usar sudocon testdisk, así que escribimos lo siguiente:

sudo testdisk

sudo testdisk en una ventana de terminal.

La primera pregunta testdiskes sobre el registro. Puede crear un nuevo archivo de registro, usar uno existente o no registrar nada en absoluto. No importa la opción que elija; no afectará la forma en que  testdiskopera.

Las opciones de registro en testdisk en una ventana de terminal.

Puede simplemente presionar Enter para aceptar la opción resaltada y crear un nuevo archivo de registro. Se creará en el directorio desde el que comenzó testdisk. Cuando realiza su selección,  testdiskle pregunta qué disco duro contiene el sistema de archivos en el que desea trabajar.

Enumera los discos duros que puede encontrar, así como los squashfs archivos “/ dev / loop”. Habrá uno de estos para cada aplicación que haya instalado desde un snap. Son de solo lectura, por lo que no debería haber logrado eliminar nada de estos sistemas de archivos.

Relacionado:  ¿Qué significa “grabar un CD”?

Un menú del disco duro en testdisk en una ventana de terminal.

Solo hay un disco duro físico en esta computadora de prueba, por lo que usamos la flecha hacia abajo para resaltar la opción “/ dev / sda”. Luego usamos la flecha derecha para seleccionar «Continuar» y luego presionamos Enter.

"Continuar" seleccionado en una ventana de terminal.

testdisk también necesita saber el tipo de partición. Presenta un menú de opciones, junto con el tipo de partición que se detecta automáticamente en la parte inferior.

Menú de tipo de tabla de particiones en testdisk en una ventana de terminal.

A menos que tenga una buena razón para no hacerlo, resalte el tipo de partición que se ha detectado automáticamente y luego presione Entrar.

En el menú de funciones que aparece, resalte “Avanzado” y luego presione Entrar.

"Avanzado" seleccionado en el menú de funciones en una ventana de terminal.

Aparecerá el menú de selección de partición.

El menú de selección de partición en testdisk en una ventana de terminal.

Los archivos que estamos buscando están en la partición del sistema de archivos de Linux. Solo tenemos una partición de Linux en nuestro disco duro, pero es posible que tenga más.

Seleccione la partición en la que se encontraban sus archivos, use las teclas de flecha izquierda y derecha para seleccionar «Lista» y luego presione Entrar. Aparecerá el menú de selección de archivos.

El menú de selección de archivos en testdisk en una ventana de terminal.

Utilice las flechas hacia arriba y hacia abajo o las teclas PgUp y PgDn para navegar por la lista de archivos y directorios. Presione la flecha derecha o Enter para ingresar a un directorio y la flecha izquierda o Esc para salir de un directorio.

Estamos buscando archivos que pertenezcan a dave. Los archivos de todas las cuentas de usuario se encuentran en el directorio «Inicio». Entonces, resaltamos el directorio «Inicio», y luego podemos presionar la flecha derecha o Enter para ingresar a ese directorio.

A continuación, se enumeran todas las cuentas de usuario. Lo resaltamos dave, y luego presionamos la flecha derecha o Enter para ingresar a ese directorio.

Un directorio de inicio en testdisk en una ventana de terminal.

Ahora podemos ver los archivos que pertenecen a la dave cuenta. Se han eliminado las entradas en rojo. Navegamos por los archivos y directorios hasta ubicar los archivos que queremos recuperar.

Archivos eliminados en TestDisk en una ventana de terminal.

Para recuperar un archivo, simplemente resáltelo y luego presione c (minúscula).

La pantalla cambia y le indica que elija un destino para el archivo recuperado. Debido a que creamos un directorio llamado «Restaurado» y comenzamos testdiskdesde él, la primera entrada en la lista (.) Es ese directorio. Para recuperar este archivo borrado a ese directorio, presionamos C (mayúscula).

Relacionado:  ¿Qué es una recompensa por errores y cómo puede reclamarla?

El menú de destino del archivo en TestDisk en una ventana de terminal.

Después de hacer esto, regresará a la pantalla de selección de archivos. Si desea recuperar más archivos, simplemente repita el proceso. Resalte un archivo eliminado, presione c (minúscula) para copiarlo y luego presione C (mayúscula) para recuperarlo.

Trabajar con archivos restaurados

Después de restaurar un archivo, se reconstruye el árbol de directorios a su ubicación original, lo cual es útil porque le recuerda en qué parte del disco duro solía residir el archivo original. Esto significa que si necesita copiarlo de nuevo, ya sabe dónde colocarlo.

Si recupera varios archivos de diferentes ubicaciones de sistemas de archivos que tienen el mismo nombre de archivo, deberán almacenarse por separado de todos modos.

Puede escribir lo siguiente para ver el contenido del directorio «Restaurado»:

ls

Si solicitó testdiskcrear un archivo de registro, estará en el directorio «Restaurado». Debido a que nuestros archivos recuperados estaban ubicados en «/ home / dave», se copiaron en nuestro directorio «Restaurado», anidado en directorios con el mismo nombre.

Podemos cambiar al directorio «dave» copiado usando  cd. Asegúrese de no incluir una barra inclinada ( /) en la ruta; desea cambiar al «hogar» local, no al sistema «/ hogar».

Escribimos lo siguiente:

cd casa / dave

Los archivos recuperados están en ese directorio, así que escribimos:

ls

Está en una ventana de terminal.

Echemos otro vistazo a los archivos recuperados usando la -l opción (lista larga):

ls -l

ls -l en una ventana de terminal.

Como solíamos sudo iniciar  testdisk, los archivos recuperados se han restaurado con «root» como propietario. Podemos volver a cambiar el propietario a «dave» usando chown:

sudo chown dave.dave *

sudo chown dave.dave * en una ventana de terminal.

Escribimos lo siguiente para asegurarnos de que se haya restaurado la propiedad correcta:

ls -l

ls -l en una ventana de terminal.

testdisk: Código de alivio

Esa sensación de alivio tras recuperar un archivo importante que, hace un momento, se sintió irremediablemente perdido, es algo que siempre agradecerás.

Por eso  testdiskes una utilidad tan útil. Después de recorrer los menús y comenzar a restaurar archivos, es fácil caer en un ritmo de resaltado, c, C, repetir.