Un poco de contexto:
Me compre hace un tiempo atrás un Samsung Galaxy S3. Esta muy bueno el celular, pero Android y Samsung en un arranque de gran estupidez, decidieron:
- Android: Eliminar el soporte en 4.X.X para usar el celular como pendrive.
- Samsung: Usar por default Ex-Fat para formatear memorias SD.
Ex-FAT puede ser bueno, pero no es OpenSource. En linux hay una implementación hecha por Google para FUSE de Ex-FAT, por lo tanto no tiene el mismo rendimiento (y hace inútil el uso de memorias con mucho ratio de transferencia).
Que paso:
La cosa es que hace poco, una de mis tarjeta SD (la del celular, donde estaban todas las fotos de mi ultimo viaje, y mis savegames…), dejo de ser reconocida por mis sistemas operativos (win7 y linux).
Al parecer la definición de la partición estaba corrupta. Por suerte, photorec aun podía encontrar los archivos… Pero googleando mi dilema, me encontré con la siguiente hipótesis: Que la definición de la partición estaba corrupta, y que aun se podía rescatar de su backup con el siguiente comando.
dd if=sdc1.onemb of=sdc1.onemb bs=512 count=1 conv=notrunc skip=12
Este comando soluciono el problema. Lo que hace es copiar el backup (que esta en el sector 12) al primer sector (donde esta el original).
Kudos a Andrew Nayenko, quien posteo esta solución en:
https://groups.google.com/forum/#!topic/exfat/JkjAsCu4Cws
Por otro lado…
- Si quieren recuperar archivos, usen Photorec, programa capaz de recuperar archivos borrados y de particiones corruptas.
- No usen Ex-FAT. Como es un celular (no voy a almacenar archivos de mas 2 GB), prefiero usar FAT32 o VFAT antes que Ex-FAT. Ademas, el rendimiento es mucho mejor.
- Tengo que encontrar una opcion de sistema de archivos para tarjetas SD. El tema esta en que se necesita algo que permita archivos grandes, de buen rendimiento, y que minimice las escrituras (algo que VFAT y FAT32 no hacen).