Cómo recuperar un archivo borrado con lsof

¿Has borrado por equivocación un archivo? Ese mismo archivo ¿lo tienes abierto en alguna otra aplicación? (por ejemplo, estabas escuchando un ogg o un mp3 y mientras lo escuchas, sin querer, lo has borrado en lugar de moverlo a otro directorio, por ejemplo). Bien, pon en «Pause» el reproductor y no lo cierres por nada del mundo 🙂 . Ahora, usa el sistema virtual de ficheros /proc para recuperarlo:

$ cp /proc/4158/fd/4 elfichero.recuperado

(4158 es el identificador de la aplicación que todavía tiene abierto el fichero que acabas de borrar.En nuestro ejemplo, sería el identificador del player mp3. 4 es el descriptor del fichero que nos interesa (en nuestro ejemplo, el player puede tener abierto más de un fichero, 4 es el identificador que nos interesa). ¿Cómo he obtenido esos números? Con lsof:

$ lsof | grep elfichero.borrado

¿Quieres saber más al respecto? Léete este artículo de Linux.com de donde yo he sacado la información. Te hará falta en el futuro…

8 comentarios en «Cómo recuperar un archivo borrado con lsof»

  1. Hola, he probado a hacer lsof con un pdf abierto con Evince y sí que me aparece en la lista, pero si abro ficheros gráficos con The GIMP no aparecen ¿sabes a qué se debe?

    Gracias por el truco.

  2. Javi: cierto, y no sé por qué ocurre. De hecho, un lsof del proceso GIMP muestra en la carpeta fd sólo pipes y enlaces a /dev/pts/0 . A ver si alguien nos lo puede aclarar 🙂

  3. De lo del Gimp, yo voy a apostar porque Gimp utiliza un sistema de múltiple Undo, y vete tú a saber cómo lo maneja internamente.
    Una cosa está clara: no relee el archivo original.
    De todos modos, con el Gimp el problema no es tan grave, y la idea sigue siendo la misma: No cierres el programa!!!!! Y simplemente dale a Guardar Como… Si es necesario, Ctrl-Z hasta que hayas vuelto al archivo original.
    No es óptimo, pero bueno, es lo que hay. Supongo que se podría informar a los desarrolladores o hacerte tú mismo un parche.

Responder a ochoto Cancelar la respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.