Receta de Paella de verduras

Recuperar archivos eliminados en Linux con lsof

Una de las cosas más deseadas que usted puede hacer con lsof es tan general como versátil, aplicación que le permite recuperar un archivo que acaba de suprimir accidentalmente. Un archivo en linux es un indicador inode, que contiene los datos del archivo (permisos, dueño y  donde reside realmente en el disco). La supresión del archivo quita el acoplamiento, pero no el inode en sí mismo - si otro proceso tiene abierto el inodo no es liberado para escribirlo hasta que el proceso lo termine.

Para probar esto, cree un archivo de texto de prueba, y guardelo a continuación, escriba less testing.txt. Abra otra ventana de terminal y escriba rm testing.txt. Si intenta borrar testing.txt, usted obtendrá un mensaje de error. Pero! less todavía tiene una referencia al archivo. Así:






> lsof | grep testing.txt

less 4607 juliet 4r REG 254,4 21 8880214 /home/juliet/testing.txt (deleted)


También puede probar a poner lsof |grep deleted
* Recuerde, debe de haberlo borrado hace muy poco.

Las columnas importantes son las segundas, que le da el PID del proceso que ha abierto el archivo (4607), y el cuarto, que le da el descriptor de archivo (4). Ahora, vamos a buscar en /proc, donde todavía habrá una referencia al inodo, desde donde se puede copiar el archivo de salida:






> ls -l /proc/4607/fd/4
lr-x------ 1 juliet juliet 64 Apr 7 03:19 /proc/4607/fd/4
 -> /home/juliet/testing.txt (deleted)
> cp /proc/4607/fd/4 testing.txt.bk


Nota: no utilice el flag -a con cp, porque copiaría un (roto) enlace simbólico, en lugar del contenido real del archivo.

Ahora comprobamos el archivo para asegurarnos de que tenga lo que usted piensa que tiene, y ya está!

Fuente: LinuxParty

Comentarios