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

sudo 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:

  1. Indicar qué consideras que debería aparecer en dicho artículo.
  2. Proponer (o producir) un icono que ilustre el artículo.
  3. Sugerir un tema alternativo que te gustaría poder disfrutar en el blog.

34 comentarios en “Recuperar pendrive estropeado

  1. Jose Catalan dijo:

    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

    • mauricio dijo:

      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!

  2. joseanq dijo:

    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.

  3. 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 :)

  4. joseanq dijo:

    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.

  5. 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

  6. Francesc dijo:

    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

  7. Rafael dijo:

    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? ;)

  8. diego abello dijo:

    Hola, hace un par de semana mi pendrive kingstom de 4gb dejo de funcionar, aparece en todos los wondows como “no se reconoce el dispositivo usb”. Durante este tiempo he probado todo sin encontrar solucion a este problema; necesito recuperar la info y llegue a este blog, mi pregunta es, tengo win7, qué debo hacer para montar linux?? y poder probar si puedo salvar la info del pendrvie

  9. Tengo dos dudas:
    1- He visto que los tipos de archivos que foremost es capaz de recuperar son avi, mpg, bmp, dll, png, jpg, pdf, doc, docx, gif, htm, jar, ole, ppt, rar, zip, exe, wav,xls.
    No he visto, y por ello te lo pregunto, si también puede recuperar archivos mp3.
    2- Esta claro, lo he probado, que se puede usar para recuperar información perdida de cdrom, dvd, pendrive, pero tengo dudas sobre otros dispositivos: particiones aparte de las del sistema ( por ejemplo particiones en formato ntfs, o fat32 )discos duros externos, ipod o similar, lectores de mp3, cámaras digitales de fotos, teléfonos móviles, etc Yo supongo que se debería poder hacer sobre cualquier dispositivo que el sistema sea capaz de montar como sistema de almacenamiento de datos…pero…

    • Parece que en la última versión del programa sigue sin admitir ficheros mp3 (aunque si mpg y mp4); siempre podrías modificar el fichero de configuración y añadir la cabecera y pie que permita al programa recuperarlos (esto supone un rato largo de pruebas y no está garantizado el resultado)

      Respecto a la pregunta de otras unidades: siempre puedes utilizar (si el tamaño no es excesivamente grande y tienes donde almacenarlo) una iso de dicha partición y tirar contra ella tal y como se indica en el artículo; otra posibilidad sería utilizar el parámetro -i contra la ruta de la partición a gestionar (p.e. /dev/sdb1) en lugar de usar la iso.

      Yo personalmente prefiero hacer una imagen con dd para evitar problemas y/o que se pierda información por error

  10. He encontrado este otro sistema de recuperación de datos perdidos:
    instalar el paquete testdisk ( viene en casitodas las distros ) y con el se instala el programa photorec, con éste es con el que también se pueden recuperar datos perdidos.

    Como usar photorec: http://www.scribd.com/doc/17390213/Recuperacion-de-fotos-y-archivos-de-memorias-USB-con-PhotoRec-en-Ubuntu-904

    Lista de archivos que photorec recupera: http://www.cgsecurity.org/wiki/Formatos_De_Archivos_Recuperados_Por_PhotoRec

  11. gabi gabi dijo:

    hola hice todo tal cual indicas pero al momento de extarer los archivos me dice que finalizo exitosamente sin embargo no los veo en la carpeta que esta .iso como hago??? muchas gracias

  12. alejandro dijo:

    Hola:
    He hecho todos los pasos y he creado la imagen .iso de mi pendrive en el directorio /tmp.
    Hasta ahí todo bien.

    Luego el siguiente comando:
    foremost -v -i /tmp/pendrive.iso

    Ha trabajado bastante tiempo y luego cuando ha terminado…
    ¿dónde veo mis archivos?

    En el directorio /tmp no están, allí está la imagen .iso

    También he grabado la imagen pendrive.iso en un dvd con el programa Brasero pero luego al meter el dvd en mi lectora, no reconoce el dvd y no puedo mirar nada.

    ¿Cómo hago para recuperar mis archivos de la imagen pendrive.iso?

    Gracias, me es de vital importancia.

    Alejandro

  13. juan dijo:

    Hola amigo:
    Estoy aprendiendo contigo y las respuestas de los demás,cuando sepa un poco más,te preguntaré cosas de menos novato.
    Sólo quiero darte las gracias por el trabajo que haces
    Juan

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s