Cómo recuperar archivos borrados en Linux con testdisk
Publicado: 2022-01-29¿Alguna vez ha eliminado un archivo y se ha arrepentido al instante? ¡Lo necesitas de vuelta, y rápido! Pero, ¿qué sucede 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: ¿Diminutivo de Remordimiento?
Es muy fácil usar el comando rm
y encontrarse mirando una ventana de terminal con una profunda sensación de arrepentimiento. Un pequeño error con los comodines y puede eliminar 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 es el propietario, cuáles son los permisos, etc.
También contiene puntos de entrada a enlaces duros que apuntan al archivo. Cada archivo tiene al menos un enlace duro. Cada vez que crea un nuevo enlace duro, el recuento de enlaces duros aumenta en uno. Cada vez que elimina un vínculo físico, el recuento de vínculos físicos en el inodo se reduce en uno.
Cuando elimina un archivo que el inodo ha marcado como no utilizado (y listo para reutilizarse), se elimina el último vínculo físico. Cuando esto sucede, el archivo no aparecerá en las listas de directorios y no se podrá utilizar ni acceder a él.
Sin embargo, los datos que componían 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 sobrevivientes del inodo anterior y luego reemplazar los bits que faltan.
Esas son actividades no triviales. Normalmente, cuando borras 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 es 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.
Aquí es donde entra testdisk
. Es fácil de usar y no requiere un conocimiento detallado y de bajo nivel del sistema de archivos. ¡Veamos cómo usarlo!
RELACIONADO: Todo lo que siempre quiso saber sobre los inodos en Linux
Instalación de disco de prueba
Para instalar testdisk
en Ubuntu, use este comando:
sudo apt-get install disco de prueba
En Fedora, debe escribir:
sudo dnf instalar disco de prueba
En Manjaro, tienes que usar pacman
:
sudo pacman -Sy disco de prueba
Usando disco de prueba
Aunque se ejecuta en una ventana de terminal, testdisk
tiene una interfaz rudimentaria. Utilice 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
Escribimos lo siguiente para cambiar al nuevo directorio e iniciar testdisk
desde allí:
cd restaurado/
Tenemos que usar sudo
con testdisk
, entonces escribimos lo siguiente:
disco de prueba sudo
La primera pregunta que hace testdisk
es sobre el registro. Puede crear un nuevo archivo de registro, utilizar uno existente o no registrar nada en absoluto. No importa qué opción elijas; no afectará la forma en que opera testdisk
.
Simplemente presione Entrar para aceptar la opción resaltada y crear un nuevo archivo de registro. Se creará en el directorio desde el que inició testdisk
. Cuando realiza su selección, testdisk
le 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
“/dev/loop”. Habrá uno de estos para cada aplicación que hayas instalado en un snap
y cerrar de ojos. Son de solo lectura, por lo que no debería haber logrado eliminar nada de estos sistemas de archivos.
Solo hay un disco duro físico en esta computadora de prueba, así 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.
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.
A menos que tenga una buena razón para no hacerlo, resalte el tipo de partición que se detecta automáticamente y luego presione Entrar.
En el menú de funciones que aparece, resalte "Avanzado" y luego presione Entrar.
Aparecerá el menú de selección de partición.
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 estaban 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.
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 hacia la derecha o Enter para ingresar a un directorio y la flecha hacia la izquierda o Esc para salir de un directorio.
Estamos buscando archivos que eran propiedad de 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 Entrar para ingresar a ese directorio.
Todas las cuentas de usuario se enumeran para nosotros. Resaltamos a dave
, y luego presionamos la flecha derecha o Enter para ingresar a ese directorio.
Ahora podemos ver los archivos que pertenecen a la cuenta dave
. Las entradas en rojo han sido eliminadas. Navegamos por los archivos y directorios hasta localizar los archivos que queremos recuperar.
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" e iniciamos testdisk
desde él, la primera entrada en la lista (.) es ese directorio. Para recuperar este archivo eliminado en ese directorio, presionamos C (mayúsculas).
Después de hacer esto, volverá 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úsculas) para copiarlo y luego presione C (mayúsculas) 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 volver a copiarlo, ya sabe dónde colocarlo.
Si recupera una cantidad de archivos de diferentes ubicaciones del sistema 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 le pidió a testdisk
que creara 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", anidados en directorios con el mismo nombre.
Podemos cambiar al directorio "dave" copiado usando cd
. Asegúrese de no incluir una barra diagonal inicial ( /
) en la ruta; desea cambiar a la "inicio" local, no al "/inicio" del sistema.
Tecleamos lo siguiente:
cd casa/dave
Los archivos recuperados están en ese directorio, así que tecleamos:
ls
Echemos otro vistazo a los archivos recuperados usando la opción -l
(lista larga):
ls-l
Debido a que usamos sudo
para 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 *
Escribimos lo siguiente para asegurarnos de que se ha restaurado la propiedad correcta:
ls-l
testdisk: Código para Alivio
Esa sensación de alivio después de recuperar un archivo importante que, hace un momento, se sentía irremediablemente perdido, es algo que siempre apreciará.
Es por eso que testdisk
es una utilidad tan útil. Después de recorrer los menús y comenzar a restaurar archivos, es fácil caer en un ritmo de resaltar, c, C, repetir.
Comandos Linux | ||
archivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · cola · stat · ls · fstab · eco · menos · chgrp · chown · rev · mirar · cadenas · tipo · renombrar · zip · descomprimir · montar · desmontar · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · parche · convertir · rclone · triturar · srm | |
Procesos | alias · pantalla · top · agradable · renice · progreso · strace · systemd · tmux · chsh · historia · at · lote · gratis · cual · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · tiempo de espera · pared · sí · matar · dormir · sudo · su · hora · groupadd · usermod · grupos · lshw · apagar · reiniciar · detener · apagar · contraseña · lscpu · crontab · fecha · bg · fg | |
Redes | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · cavar · dedo · nmap · ftp · curl · wget · quién · whoami · w · iptables · ssh-keygen · ufw |
RELACIONADO: Las mejores computadoras portátiles Linux para desarrolladores y entusiastas