Fuente: AndaLinux
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 53failed
[ 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.










Últimos comentarios