¿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…
Muy útil! Muchas gracias!
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.
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 🙂
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.
Probablemente GIMP tiene los ficheros mapeados y deja al SO la gestión del mismo. Ver «man 2 mmap»
Muy util y para tener en cuenta 😀 😀