Entradas Aleatorias

viernes, 10 de julio de 2009

Linux : Recuperar archivos borrados usando lsof

Una de las cosas precisas que puede hacer con la herramienta versátil lsof es usarla para recuperar archivos que borraste por casualidad o accidentalmente.

Un archivo en Linux es un puntero a un inode, el cual contiene información sobre el archivo (permisos, propietario, y donde esta su contenido actual en el disco). Borrando el archivo se elimina el enlace al inode, pero no el inode mismo, si otro proceso lo tiene abierto, el inode no es liberado para escritura hasta que el proceso termine con el.

Para probar esto, crea un archivo de texto, guárdalo como "ejemplo.txt" y luego en un terminal ejecutas "less ejemplo.txt". Ahora abre otro terminal y ejecuta "rm ejemplo.txt". Si ahora intentas hacer "ls ejemplo.txt" recibirás un mensaje de error, ya que el enlace del archivo a sido removido. Sin embargo el comando "less" aun mantiene la referencia al archivo. Entonces ejecuta:

---------------------------------------------------------------------
[BASH ]# lsof | grep ejemplo.txt
less 3274 ubuntu 4r REG 117,0 5 76104
/home/d/ejemplo.txt(deleted)
---------------------------------------------------------------------

Las columnas mas importantes son la segunda, que te da el PID del proceso que tiene el archivo abierto (3274) y la cuarta que te da el descriptor del archivo (4). Ahora, observa en /proc, donde todavía hay una referencia al inode, desde el cual puedes copiar de vuelta el archivo:

---------------------------------------------------------------------
# ls -l /proc/3274/fd/4
lr-x------ 1 ubuntu ubuntu 64 2009-06-30 16:15 /proc/3274/fd/4 ->
/home/d/ejemplo.txt (deleted)
# cp /proc/3274/fd/4 ejemplo.txt
---------------------------------------------------------------------

Nota: no uses la opción -a con el comando cp, el cual solo copia el enlace simbólico y no el archivo de contenido actual.

Ahora revisa el archivo para asegurarte que has obtenido el archivo con el contenido que querías.

Obviamente las circunstancias no siempre serán como esta para poder usar esta técnica, ya que si otro proceso no tiene el archivo abierto esta técnica no funcionara.

Fuente: Linux para Todos

Artículos relacionados


Bookmark and Share

1 comentaris:

Recuperando los datos dijo...

Gracias por la info, de verdad esta de lujo

Publicar un comentario

Clicky Web Analytics
Suscríbete al Feed