Al montar mi tarjeta SD en mi galaxy SIII los archivos y carpetas de la tarjeta con caracteres que no están en el rango ASCII se corrompen. Esto sucede simplemente seleccionando "Desmontar tarjeta" en los ajustes de almacenamiento y volviendo a montarla. No es necesario retirar físicamente la tarjeta y volver a colocarla. Apagar y volver a encender el teléfono también da lugar a la corrupción.
Las carpetas cuando se ven con un gestor de archivos en el teléfono aparecen como archivos de tamaño 0 con una fecha de 31 de diciembre de 1969 (que es la época de linux) y no se puede navegar para ver su contenido. Se muestran como carpetas vacías. Los archivos se vuelven de tamaño cero con esa misma fecha y no se pueden abrir ni mostrar en la Galería, el reproductor de música, etc. Se abren como una carpeta vacía. (Ver imagen de abajo)
Estoy usando la versión 4.1.2 de Android.
La tarjeta es una SanDisk 64gb micro sdxc (clase 10). El problema ocurrió cuando la tarjeta se formó de fábrica (con exFAT) y también después de formatearla con el teléfono (ajustes > almacenamiento).
Algunos ejemplos de nombres de archivo que provocan la corrupción de la carpeta son "Aṣa" o "דניאל". Es indiferente que el archivo se haya copiado a la tarjeta mediante transferencia usb o sacando la tarjeta y usando un lector en un PC con Windows, o que se haya cambiado el nombre (usando el teléfono) una vez que el archivo estaba en la tarjeta.
Los archivos con esos mismos nombres no se corrompen si están en la memoria interna del teléfono y puedo utilizarlos sin problema.
Al sacar la tarjeta y utilizarla en un PC con Windows 7 se pueden ver los archivos. Pero a veces las carpetas afectadas aparecen duplicadas. Es decir, dos veces con el mismo nombre ambas. Comprobando el disco con Windows informa de errores e intenta solucionarlos. Pero luego al volver a poner la tarjeta en el teléfono los archivos se vuelven a corromper.
¿Cómo puedo evitar que se produzca esta corrupción?
Actualización: con una tarjeta de 2GB formateada con FAT32 los archivos no se corrompieron. Pero después de formatearla a exFAT pude reproducir la corrupción de archivos. Creo que puedo descartar una tarjeta sd mala.
Más información, este es un informe de Windows 7 después de ejecutar checkdisk. Tenga en cuenta que los 3 archivos existían en el directorio TestFolder, que estaba dañado:
[Window Title]
Checking Disk Removable Disk (M:)
[Main Instruction]
Some problems were found and fixed
[Content]
Any files that were affected by these problems were moved to a folder named "Found" on the device or disk. Your device or disk is now ready to use.
If you removed the device or disk before all files were fully written to it, parts of some files might still be missing. If so, go back to the source and recopy those files to your device or disk.
[^] Hide details [Close]
[Expanded Information]
Volume Serial Number is 6518-E54A
Windows is verifying files and folders...
Corruption was found while examining files in directory \TestFolder\ (0).
Corruption was found while examining files in directory \TestFolder\ (3).
Corruption was found while examining files in directory \TestFolder\ (6).
Corruption was found while examining files and directories.
File and folder verification is complete.
Windows has made corrections to the file system.
62363648 KB total disk space.
41656576 KB in 43 files.
768 KB in 6 indexes.
256 KB in use by the system.
20706048 KB available on disk.
131072 bytes in each allocation unit.
487216 total allocation units on disk.
161766 allocation units available on disk.
Las carpetas no se corrompen si se crean en el teléfono con nombres hebreos, luego se desmontan y se comprueban en Windows. Sólo después de volver a montar en el teléfono.
MÁS DATOS: esto es, creo, información relevante de adb logcat
:
I//system/bin/fsck.exfat( 1897): fsck.exfat 1.1.0p2
I//system/bin/fsck.exfat( 1897): [fsck] Invalid dir entry: (92675,0)
I//system/bin/fsck.exfat( 1897): [fsck] Wrong dir entry name hash
I//system/bin/fsck.exfat( 1897): [fsck] Successfully recovered
I//system/bin/fsck.exfat( 1897): Filesystem was modified.
I/logwrapper( 1897): /system/bin/fsck.exfat terminated by exit(4)
W/Vold ( 1897): exfat -> Filesystem modified - rechecking (pass 2)
E/Vold ( 1897): MDM :: sdCardWriteAccessBlocked 0
D/Vold ( 1897): Detected exFAT file system.
Y al arrancar sin nombres de archivos problemáticos, en su lugar me aparece un bonito
I//system/bin/fsck.exfat( 1897): No errors
I/Vold ( 1897): exfat -> Filesystem check completed OK
Y de adb shell
Puedo probar y ver a los que dan problemas (después de remontar, nota 2 directorios con aparentemente el mismo nombre, que en una consola de Windows parece ser la salida de 2 caracteres por unicode):
shell@android:/storage/extSdCard/Test $ ls * -l
ls * -l
drwxrwxr-x system media_rw 2013-02-18 18:39 אבג
אבג: No such file or directory
1|shell@android:/storage/extSdCard/Test $