SuSE Linux: Todas las versiones
Kernel: Versiones desde 2.0
Ha borrado accidentalmente uno o más archivos en un sistema de ficheros ext2. No tiene copias de seguridad y querría recuperar el contenido de esos ficheros.
De manera similar a la de otros sistemas operativos, en el sistema de ficheros ext2 un archivo se 'borra' eliminando las referencias relevantes el el directorio del fichero. Después del borrado, los datos del fichero quedan libres para ser sobreescritos, pero aún son legibles en el disco duro. Los bloques de datos solo se borran cuando se crean nuevos archivos.
Además, después del borrado queda el llamado inodo que contiene la concatenación lógica de bloques y los permisos de acceso al completo. Aquí también se almacena el momento del borrado. El nombre del fichero es lo único que realmente se ha perdido después del borrado.
Para realizar un borrado 'seguro' en el sistema de ficheros ext2 cuando ejecuta un comando de
borrado, puede activar una opción con el comando chattr
.
Así, el archivo borrado se sobreescribirá completamente con ceros por el kernel. Sería posible
recuperar los datos borrados utilizando dispositivos especiales, pero nunca con el método aquí
descrito.
Advertencia: el programa debugfs
mencionado abajo le proporciona un acceso al
sistema de ficheros orientado al sistema. Por lo tanto, puede ser muy peligroso para los datos
restantes experimentar con los comandos descritos en la ayuda o en la página de manual si no tiene un
buen conocimiento del sistema de ficheros. Le recomendamos que cree una partición de pruebas
con fines experimentales.
No ejecute ningún acceso de escritura más en el sistema de ficheros en el que quiere
recuperar los archivos. Crear nuevos archivos puede ser especialmente nocivo para los datos
que quiere recuperar. Si sólo utiliza una partición '/', apague el ordenador y vuelva a arrancar con
el sistema de rescate. De otra forma, necesitará aplicar el comando umount
a las
particiones afectadas. En referencia al uso de 'mount' y 'umount' por favor, consulte el
capítulo "Empezando con Linux" de su Manual Básico.
Supongamos que usted ha borrado accidentalmente los siguientes ficheros y le gustaría recuperarlos.
earth:/mnt/attempt # ls -la protocole_2009.txt -rw-r--r-- 1 cg suse 1050 Dec 29 13:31 protocole_2009.txt earth:/mnt/attempt # rm protocole_2009.txt
Primero desmonte la partición afectada.
earth:~# umount /mnt
De acuerdo con el ejemplo anterior, la partición es /dev/sdc1
, que está montada en
el punto de montaje /mnt
. En los ejemplos inferiores tiene que reemplazar 'nombre del
dispositivo' con el nombre actual del dispositivo en su sistema.
Escriba el comando debugfs nombre_del_dispositivo
para iniciar el debugger del sistema de
ficheros. Una vez iniciado, mostrará el prompt debugfs:
. Aquí puede introducir
comandos para acceder directamente al sistema de ficheros.
earth:/# debugfs /dev/sdc1 debugfs 1.17, 26-Oct-1999 for EXT2 FS 0.5b, 95/08/09 debugfs: lsdel 1 deleted inodes found. Inode Owner Mode Size Blocks Time deleted 25794 515 100644 1050 2/ 2 Wed Dec 29 13:32:32 1999
El comando lsdel
muestra una lista de los inodos borrados.
Si ha borrado varios ficheros pero solo quiere recuperar uno de ellos, los permisos del fichero
mode, el propietario Owner (aquí un identificador numérico del usuario),
momento del borrado, y el tamaño size del fichero, le harán más fácil la localización del
fichero que quiere recuperar. El número de inodo, 25794 en el ejemplo superior, es especialmente
importante para el comando dump
explicado más abajo.
El siguiente comando le permite recuperar los ficheros borrados como nuevos ficheros grabados en el directorio /tmp con los mismos permisos. ¡No olvide introducir las símbolos de ángulo izquierdo y derecho < y >!
debugfs: dump -p <25794> /tmp/saved debugfs: quit earth:/# ls -l /tmp/saved -rw-r--r-- 1 cg suse 1050 Dec 29 13:31 /tmp/savedAhora puede volver a montar el sistema de ficheros y copiar los ficheros del directorio /tmp.
Hay otras formas de recuperar esos ficheros pero esta tiene la ventaja de que no necesita accesos de escritura en debugfs y no provoca un chequeo del sistema de ficheros después de haber recuperado los ficheros.