Recuperando un archivo eliminado pero abierto por otro proceso
Hoy, hace escasos 10 minutos estaba limpiando el disco, así que me dirijí a la carpeta de vídeos y... ¡raaaaca!, 20 archivos a alimentar la bestia del espacio libre. Pero al ver los archivos que habían sobrevivído a la limpieza sobrevino la preocupación sobre el paradero de uno de ellos, y es que quizá al fin y al cabo saltarse el paso de la papelera de reciclaje no fuera buena idea.
El problema era que me había cargado una película que tenía pensado compartir y con más bien pocos seeders, así que tocaba recuperarlo. Por suerte el transmission seguía abierto y seedeando, así que aún había esperanza, al fin y al cabo aún contaría con la información del archivo.
Los pasos a seguir fueron localizar primero el proceso
1 2 3 |
$ ps aux|grep transmission 1000 8546 0.0 0.0 12956 920 pts/5 S+ 16:33 0:00 grep --color=auto transmission 1000 26127 5.6 2.3 402320 23784 ? Ssl 11:54 15:40 transmission-gtk |
Proceso 26127, lo siguiente sería saltar al lugar donde se guarda la
información describiendo los archivos abiertos, este es /proc/
1 2 3 4 5 |
$ cd /proc/26127/ $ ls fd/ 0 11 14 17 2 22 25 28 30 33 36 39 41 44 47 5 52 55 8 1 12 15 18 20 23 26 29 31 34 37 4 42 45 48 50 53 6 9 10 13 16 19 21 24 27 3 32 35 38 40 43 46 49 51 54 7 96 |
A continuación toca buscar el que nos interesa, no podemos llevarnos todos (o sí, pero no es necesario :P)
1 2 3 4 5 6 7 8 9 10 |
$ file fd/* fd/0: symbolic link to `/dev/null` fd/1: symbolic link to `/home/kenkeiras/.xsession-errors` fd/10: broken symbolic link to `socket:[745308]` fd/11: broken symbolic link to `anon_inode:[eventfd]` [...] fd/7: broken symbolic link to `pipe:[745550]` fd/8: broken symbolic link to `anon_inode:[eventpoll]` fd/9: broken symbolic link to `socket:[745307]` fd/96: broken symbolic link to `/home/kenkeiras/Vídeos/La.Estrategia.del.caracol.avi (deleted)` |
El que nos interesa en este caso es entonces el último, hacemos caso omiso al '(deleted)' y guardaremos todo lo que contenga, en este caso al archivo 'save' (¡cuidado!, si ya existe un archivo con este nombre lo sobreescribirá).
1 |
$ cat fd/96 > ~/Vídeos/save |
Cuando acabe y lo hayamos probado ya podemos renombrarlo
1 |
[~/Vídeos]$ mv save La.Estrategia.del.caracol.avi |
Y ya está, como si no hubiera pasado nada.
...Aquí queda como apunte por si alguien se encuentra alguna vez en la misma situación ;)