Tutorial – Como recuperar archivos borrados en Linux con lsof
1. Junio 2009 | Por Olivers | Categoria: linux, tips, tutoriales
lsof es más que un simple comando de Linux es una herramienta que permite ver todos los archivos abiertos por un determinado proceso, tiene muchos usos pero en este caso vamos a ver como utilizar lsof para recuperar archivos que hayamos borrado accidentalmente.
Un poco de teoría un archivo en Linux es un apuntador a un inode, este inode es el que contiene los datos del archivo como permisos, propietario y donde está ubicado en el disco. Cuando borramos archivos en Linux removemos es el link pero no el inode como tal, si otro proceso tiene abierto el inode no es liberado hasta que el proceso termine con el.
Nota: Este método solo funciona si el archivo está abierto por algún proceso, si el proceso que usaba el archivo ya finalizó este método no sirve de nada.
Muchos después de leer la última línea se preguntarán para que sirve entonces si lo tiene que tener algún proceso abierto, supongamos que estás editando un archivo de audio y tienes archivo1.mp3 y archivo2.mp3, estás editando en este momento el archivo1.mp3 y decides que quieres borrar el 2 porque el 1 está perfecto, ejecutas por equivocación rm archivo1.mp3 y a llorar se ha dicho, esto es un simple ejemplo de cosas que suceden y creanme que hay muchos casos.
Este tutorial sirve para cualquier distribución de GNU/Linux.
Para este Tip vamos a realizar los siguientes pasos:
Paso 1. Crea un archivo llamado texto.txt de prueba (no intentes esto con un archivo que sea importante no me hago responsable por ninguna pérdida), escribe lo que quieras dentro de este archivo.
Paso 2. Ejecuta:
less texto.txt
Vas a ver el contenido del archivo que editaste ahora presiona Ctrl-Z para suspenderlo o abre otra ventana de terminal.
Paso 3. Ahora el momento de la verdad ejecuta:
rm texto.txt
Archivo borrado, puedes ejecutar ls texto.txt para comprobar que el archivo se borró.
Paso 4. Ahora vamos a ver lsof en acción ejecuta:
lsof | grep texto.txt
less 2422 tribulinux 4r REG 8,5 59 252900 /home/tribulinux/texto.txt (deleted)
Debe aparcerte algo similar (con algúnos números distintos), lo importante de la segunda línea es el PID ó número de proceso que es en este caso 2422 y el descriptor del archivo que es la cuarta columna es decir 4.
Ahora con estos datos podemos ver dentro del directorio proc donde todavía estará la referencia a nuestro archivo.
Paso 5. Ejecuta:
ls -l /proc/2422/fd/4
lr-x—— 1 tribulinux tribulinux 64 2009-06-01 16:18 /proc/2422/fd/4 -> /home/tribulinux/texto.txt (deleted)
Te aparecerá algo como en la línea de arriba aquí ya empezamos a respirar un poco porque aún hay esperanzas de recuperar el archivo.
Paso 6. Recuperar el archivo ejecutando simplemente:
cp /proc/2422/fd/4 texto.txt.recuperado
Colocale el nombre que quieras
Finalmente puedes ver tu archivo recuperado:
ls -l texto.txt.recuperado
-rw-r–r– 1 tribulinux tribulinux 59 2009-06-01 16:27 texto.txt.recuperado
Y listo ya tienes de vuelta tu archivo
Espero que esto le salve el día a alguien alguna vez y que les sea de utilidad aunque sea para comprender un poco más a Linux.
Saludos
Olivers
Si quieren recibir más noticias del mundo del Software Libre, Código Abierto, Open Source y Linux subscríbanse a nuestro Feed de Noticias RSS aquí o siguenos ahora por nuestra cuenta de Identi.ca o Síguenos en Twitter
Artículos Relacionados:
- Tutorial – Como instalar RealPlayer 11 y configurar el Plugin de Mozilla en Linux
- Como agregar soporte para Archivos RAR en Ubuntu
- Comandos Linux – Borrar Lineas con Sed
- Tutoriales – Actualizar Wordpress desde la consola de Linux en 3 pasos
- Tutoriales – Como asignarle dos direcciones IP a una interfaz de red en Linux






Esta muy bien tu tutorial, lo he hecho y funciona excelente. saludos
Si, si funciona, pero en este caso solo destruiste el Inodo con el rm, con lo cual los datos siempre estuvieron ahí en el disco. Luego es sencillo sacar el archivo que esta corriendo desde proc.
De todas formas se agradece, ya que a uno se le olvidan estas cosas.
La pregunta es, y si borro el archivo con shred, ¿existe alguna manera de recuperarlo en un sistema de archivos ext3 o en ntfs ?
Atento a tus comentarios,
Eliseo.
Muchas gracias por la informacion, este blog esta buenisimooo
Todo perfecto, peroooooooo
Solo funciona cuando detienes el proceso con Ctrl+Z, porq si cierras normalmente y despues ejecutas lsof no obtendras nada. Por lo q es una @#! lo q dices
Saludos
ng
Esto es una nota para todos, antes que me sigan criticando de que esto solo funciona en casos muy limitados, es verdad, esta dicho en el tutorial, es solo una demostración de como funcionan un poco las cosas en Linux, no es la panacea ni pretende serlo.
Disculpen a aquellos que esperaban más, es una simple demostración
Saludos
Olivers
También existen otras formas de recuperar archivos, mirar a?a -> http://www.gulix.cl/wiki/Recuperar_archivos_en_linux