Recuperar pendrive estropeado
Antes de las vacaciones de Navidad, un compañero del Instituto tuvo problemas con uno de sus pendrives.
En concreto, cuando lo pinchaba (en su caso era una Microsoft Windows XP pero en cualquier Linux ocurría lo mismo porque el fallo era físico) le detectaba la memoria USB pero no le mostraba su contenido.
Resignado tras la pérdida del contenido lo comentó durante los habituales cafés de media mañana a lo cual no dudé en contestar: “¿un pendrive roto? ¡déjame que le eche un vistazo!
Búsqueda de la causa
Tras estudiar los cambios en el fichero de log (comando dmesg en la terminal) que se producían al pinchar el dispositivo en mi Ubuntu Linux detecté lo siguiente
[ 2852.064000] sd 2:0:0:0: [sdb] Sense Key : Medium Error [current]
[ 2852.064000] sd 2:0:0:0: [sdb] Add. Sense: Unrecovered read error
[ 2852.064000] end_request: I/O error, dev sdb, sector 601
[ 2852.064000] FAT: Directory bread(block 538) failed
[ 2852.080000] sd 2:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE, SUGGEST_OK
Lo cual parecía indicar que existían sectores defectuosos en el mismo.
Herramientas a utilizar
Tras probar varios de los productos existentes en el mercado (sin tener en cuenta el tipo de licencia o el sistema operativo para el que estaban diseñados) con nulos resultados opté por hacer uso de la herramienta foremost que alguno de vosotros ya ha comentado anteriormente en algunos de los artículos anteriores de este blog.
Igualmente también me ha sido necesario hacer uso del comando dd para conseguir una imagen iso del dispositivo con la que poder trabajar.
Procedimiento
Como hemos comentado, el problema parecía ser la existencia de sectores defectuosos (cómo me he acordado de los “clásicos” disquetes de 3.5″) que impedían un correcto funcionamiento del aparato.
Crear una imagen del dispositivo
Para poder crear la imagen lancé desde la terminal el siguiente comando
dd if=/dev/sdb of=/tmp/pendrive.iso conv=noerror,sync
donde
- /dev/sdb es el dispositivo a recuperar (para saber cuál es el tuyo no tiene más que seguir estas instrucciones).
- /tmp/pendrive.iso es el fichero que vamos a crear a partir del contenido del pendrive.
- conv=noerror,sync es el parámetro que indica al comando dd que ignore los errores y siga generando la imagen del dispositivo aunque se produzcan fallos.
Recuperar ficheros de la imagen creada
Una vez creada la imagen del paso anterior (recomiendo hacer copia de seguridad de la iso por si fuese necesario) sólo nos queda lanzar (una vez más desde la terminal) un
foremost -v -i /tmp/pendrive.iso
Como por arte de magia y, en el directorio que nos encontremos en ese momento, aparecerán directorios para todos y cada uno de los tipos de archivos que foremost es capaz de recuperar (png, jpgs, pdfs, docs, ppts, …)
Conclusión
Método sencillo (una vez que sabes cómo) que puede serte de utilidad ante un duro trance como es la pérdida de información importante por un fallo mecánico de un dispositivo.
Aplicable a otros elementos como cdroms o dvds seriamente dañados (los hongos hacen extragos en algunos de ellos y de las ralladuras mejor ni hablar) por lo que espero haber sentado las bases para otros experimentos y/o pruebas
En el próximo capítulo
Para mañana me gustaría tratar el uso de directorios y rutas desde la terminal con especial mención a un par de comandos que permitirán reducir las teclas a pulsar y simplificar su manejo.
Si quieres colaborar puedes:
- Indicar qué consideras que debería aparecer en dicho artículo.
- Proponer (o producir) un icono que ilustre el artículo.
- Sugerir un tema alternativo que te gustaría poder disfrutar en el blog.
13 comentarios hasta ahora
Replica







whooo veo que te as currao bastante tu blog, no sabia que lo tenias tan trabajado!! Bueno, mañana te buscaré para que me digas algunas cosillas sobre linux y lo del touchpad en el XP
me creó la imagen pero una ves recuperado me aparece esto y no se donde quedaron los archivos salvados:
root@mauricio-laptop:~# foremost -v -i root/escritorio/pendrive.iso
ERROR: /root/output is not empty
Please specify another directory or run with -T.
root@mauricio-laptop:~# foremost -v -i /tmp/pendrive.iso
ERROR: /root/output is not empty
Please specify another directory or run with -T.
root@mauricio-laptop:~# foremost -v -i /tmp/pendrive.iso
ERROR: /root/output is not empty
Please specify another directory or run with -T.
root@mauricio-laptop:~# foremost -T /tmp/pendrive.iso
Processing: /tmp/pendrive.iso
|**********|
root@mauricio-laptop:~#
Independientemente de que no te recomiendo utilizar el equipo como root para los experimentos (podrías destrozar cosas sin querer) deberías eliminar el contenido de la carpeta /root/output (o utilizar el parámetro -T tal y como te está indicando foremost) si quieres volver a lanzar el comando (en el ejemplo que has copiado lo usas cuatro veces)
Si prefieres, cámbiate al directorio /tmp (con un simple cd /tmp) y lanza foremost con los parámetros que se indican en el artículo.
Si lees detenidamente descubriras que, por defecto, los archivos recuperados aparecerán en el directorio en el que lances el comando.
¡Suerte!
¡Muchas gracias!
Muy buena información, y no sólo en este artículo sino en todo el blog.
Genial tío!
Por cierto, como podemos indizar tu blog? Realmente es algo magnífico, pero el poder sistematizar una búsqueda sería maravilloso.
Jose-Antonio.
Gracias a los dos
@joseAnq, no termino de ver qué necesitas hacer (el blog tiene caja de búsquedas abajo a la derecha) si me detallas un poco más lo que necesitas lo mismo te echo una mano
me ejplico.
ayer sin ir más lejos estaba pensando en montar un servidor samba para varios guindous que tiene un amigo, en ubuntu precisamente y pensé que igual era uno de los temas que habías tratado. me recorrí todo el blog y no lo encontré. depués lo encontré en internet y lo montaré uno de estos días.
lo cierto es que ya hay un montón de temas en el blog y si hubiera una especie de índice, pues sería magnífico poder saber lo que contiene el blog.
Jose-Antonio.
[...] post info por EvoVagariO Categorías: Uncategorized Tags: Soluciones Ubuntu, Ubuntu/Linux Fuente: AndaLinux [...]
mmm bacano bacano para salvar la info que esté por ahí … pero yo tengo una pregunta… un DVD por ejemlo que tenga un pedazo rayado … al hacer esto no copia el ese capitulo rayado … o acaso el pedazo en el que se raya la pelicula… ¬ ¬ bueno ahora que lo pieso … tocaría hacer la prueba … jeje saludos ciao Buena info
Hola
He podido recuperar la mayor parte de un pendrive dañado que no leia ni WXP, ni WV, ni Mac. Muchissimas gracias por tu informacion. Saludos
No sabes lo que me alegra saber que has podido recuperar parte de la información perdida (enhorabuena)
Saludos, estoy nuevo usando Linux, excelente sistema, amigos me han traído muchos pendrive (memoria USB) infectadas por completo de virus, por lo seguro de no dañar las computadoras y dicen que por eso es muy bueno (por el momento no lo usan en casa, ya que requieren sistemas dependientes de linux ellos son medicos) el caso es que, pues facil solo colocaba el pendrive y visualizaba y borraba los archivos que eran virus y todo bien. Ahora temgo un problemita, me han traido un pendrive que igual lo monto y veo el archivo con el virus y lo borro, el caso es que el desmontarlo, el solo se monta nuevamente y aparece todo lo borrado como si nada. Me dije listo hago una copia y formateo, el caso que cuando desmonto por consola o grafico se monta solo nuevamente el pendrive. Necesito formatear el pendrive pero debe de estar desmontado para ello, como evitar que se monte automaticamente el pendrive? he visto que el pendrive tiene sectores dañados. un fragmento de lo que me sale:
[ 5912.886899] Buffer I/O error on device sdb1, logical block 1
[ 5912.886907] lost page write due to I/O error on sdb1
[ 5912.886920] Buffer I/O error on device sdb1, logical block 15433
[ 5912.886923] lost page write due to I/O error on sdb1
[ 5912.886928] Buffer I/O error on device sdb1, logical block 15436
[ 5912.886931] lost page write due to I/O error on sdb1
[ 5936.667142] usb 5-8: new high speed USB device using ehci_hcd and address 7
[ 5937.421947] usb 5-8: configuration #1 chosen from 1 choice
[ 5937.422434] scsi7 : SCSI emulation for USB Mass Storage devices
[ 5937.422985] usb-storage: device found at 7
[ 5937.422989] usb-storage: waiting for device to settle before scanning
[ 5942.414116] usb-storage: device scan complete
[ 5942.415239] scsi 7:0:0:0: Direct-Access USB 2.0 USB Flash Drive 0.00 PQ: 0 ANSI: 2
[ 5942.419711] sd 7:0:0:0: [sdb] 7897087 512-byte hardware sectors (4043 MB)
[ 5942.420573] sd 7:0:0:0: [sdb] Write Protect is off
[ 5942.420578] sd 7:0:0:0: [sdb] Mode Sense: 00 00 00 00
[ 5942.420581] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[ 5942.423690] sd 7:0:0:0: [sdb] 7897087 512-byte hardware sectors (4043 MB)
[ 5942.424565] sd 7:0:0:0: [sdb] Write Protect is off
[ 5942.424569] sd 7:0:0:0: [sdb] Mode Sense: 00 00 00 00
[ 5942.424572] sd 7:0:0:0: [sdb] Assuming drive cache: write through
[ 5942.424579] sdb: sdb1
[ 5942.490830] sd 7:0:0:0: [sdb] Attached SCSI removable disk
[ 5942.490884] sd 7:0:0:0: Attached scsi generic sg2 type 0
[ 5975.022514] sd 7:0:0:0: [sdb] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE,SUGGEST_OK
[ 5975.022525] sd 7:0:0:0: [sdb] Sense Key : Data Protect [current]
[ 5975.022533] sd 7:0:0:0: [sdb] Add. Sense: Write protected
[ 5975.022539] end_request: I/O error, dev sdb, sector 64
[ 5975.022544] Buffer I/O error on device sdb1, logical block 1
[ 5975.022551] lost page write due to I/O error on sdb1
[ 5975.023799] sd 7:0:0:0: [sdb] Device not ready: Sense Key : Not Ready [current]
[ 5975.023807] sd 7:0:0:0: [sdb] Device not ready: Add. Sense: Medium not present
[ 5975.023814] end_request: I/O error, dev sdb, sector 15496
[ 5975.023819] Buffer I/O error on device sdb1, logical block 15433
[ 5975.023823] lost page write due to I/O error on sdb1
[ 5975.024756] sd 7:0:0:0: [sdb] Device not ready: Sense Key : Not Ready [current]
[ 5975.024764] sd 7:0:0:0: [sdb] Device not ready: Add. Sense: Medium not present
[ 5975.024772] end_request: I/O error, dev sdb, sector 15499
[ 5975.024776] Buffer I/O error on device sdb1, logical block 15436
[ 5975.024781] lost page write due to I/O error on sdb1
[ 5976.415770] sd 7:0:0:0: [sdb] 7897087 512-byte hardware sectors (4043 MB)
[ 5976.416393] sd 7:0:0:0: [sdb] Write Protect is off
[ 5976.416400] sd 7:0:0:0: [sdb] Mode Sense: 00 00 00 00
[ 5976.416403] sd 7:0:0:0: [sdb] Assuming drive cache: write through
root@Equipo3:~#
Yo creo que esta haciendo una imagen en algun lado donde, quisas en /temp, borro todo lo que esta alli y nada.
alguien me puede orientar dar una mano. Gracias…
Me surgen algunas dudas pero la principal es la distribución Linux que estás usando para hacer estas pruebas.
Cuando lo desmontas, ¿cómo lo haces?
¿Sería posible que me enviases una imagen iso del contenido del pendrive para poder echarle un vistazo tranquilamente y comprobar si ocurre igual en mi equipo?
Saludos y, si es posible, envia las preguntas a través de la pestaña de Soporte Técnico para evitar molestar al resto de visitantes con preguntas particulares, ¿te parece?