La extraña historia de la MicroSD infinita y cómo reparar un directorio que se convirtió en archivo en Linux


Hace rato me trajeron a revisar una MicroSD con un problema muy peculiar: Tenía una especie de virus o error bastante curioso que hacía que todas las carpetas se multiplicaran infinitamente hasta que (en el caso de windows) la ruta fuera tan larga que no se pudiera accesar, y los archivos de la SD en teoría estaban hasta el fondo porque aunque todas estas carpetas señuelo estaban vacías, la SD tenía 2GB llenos y eso tenía lógica pues estaba llena de videos según me comentó el cliente.

Cuando escuché del problema lo primero que pensé fue "voy a usar ls, find o algún comando similar para saber donde están los archivos y extraerlos desde la consola" pero el loop era infinito y cada que accesabas a una carpeta se creaba otra del mismo nombre infinitamente impidiendo que vieras los archivos. Intenté usar varios métodos para listar directorios y archivos pero sólo conseguía lo mismo: Loop infinito, incluso me pareció extraño porque intenté conectar una USB aparte (en mi máquina Linux donde estaba arreglando esto) y de pronto el proceso del loop se apoderó de ella (no dejándome extraerla con seguridad ni nada) pero no se infectó con el virus obviamente. Después de unos minutos de tener la MicroSD montada, la RAM se empezó a saturar, pues el proceso continuaba infinitamente y tuve que cerrar la sesión.

Cierro la sesión y al volver me doy cuenta de que alguno de los comandos de lectura que apliqué desde la consola al Filesystem había activado un proceso como de protección del virus que la MicroSD tenía y me había convertido mis directorios en "datos brutos" que a simple vista son archivos ilegibles con nombres súper extraños y el filesystem se había vuelto de sólo lectura, por lo que ni cambiar el nombre de éstos podía.

Cómo lo reparé:

En este momento, había dado todo por perdido pero el cliente (que resulta ser una amiga mía de mucha confianza) estaba viéndome trabajar y estaba súper consternada porque esos videos eran un trabajo final para la universidad, por lo que fingí que no pasaba nada malo y continué.

Los directorios (carpetas) de la MicroSD se habían vuelto archivos de data pura que eran ilegibles para cualquier programa pero guardaban en su escencia (a juzgar por el diálogo de propiedades) su alma de "directorio" Esto es complicado de explicar, pero imagínense un archivo binario ilegible que dentro tiene "nada" con un nombre como "á.é.í.O.ü.." (sin extensión) que al darle en propiedades nos dice que es un "ente" del tipo carpeta. Por otro lado no podía ni cambiarles el nombre ya que el Filesystem se había vuelto de sólo lectura y por tanto NI ROOT tenía poder sobre la MicroSD. Lo primero que pensé por esto fue hacer un "remontaje" con el siguiente comando:

sudo mount -o remount,rw '/ruta/a/MicroSD'

Cosa que me volvió el filesystem legible y pude cambiar los nombres de todas las carpetas de jalón, pero al hacerlo perdieron su condición de directorio y se habían convertido en NADA. Si al principio estábamos mal, este era el final jajaajaja!.... Ya estaba por rendirme cuando seguí investigando y me topé con el caso de un tipo al que le pasó esto pero en su disco duro, la parte importante de su anécdota decía:

The fix for me was to reboot into level 3 as root and unmount /home, then running an fsck -f on the hard drive, then I rebooted and the files had been converted back into directories and none of my files were lost or corrupted.
So, eso me animó. Abrí Gparted, chequé la ruta "/dev" de la MicroSD problemática y le pasé una barrida con fsck (para ser sinceros no me di cuenta de si estaba montada o no en ese momento, asumo que no) con el siguiente comando:

sudo dosfsck -w -r -l -a -v -t /dev/sdcX

Y voilá! retiro la MicroSD, la vuelvo a introducir y entre todos los datos en bruto "vomitados" después de la reparación con fsck salen los archivos de la muchacha. Pero la cosa no acabó ahí: Debido a que son archivos "Reintegrados" tuve que tomar todos los que fueran videos (que resultaron estar en un formato "bruto" llamado REC) Y abrirlos 1 por 1 con VLC para que "vomitaran" los metadatos sobrantes. Esto igual es difícil de explicar, pero en resumen, cuando esto pasa se tiene que abrir cada uno de los archivos rescatados para que "vomite" metadatos sobrantes (algún thumbnail o data pura) y una vez abiertos y verificados (ya soltando los extras) el archivo queda 100% listo para su uso. En el caso de estos videos los revisé con VLC y los convertí de REC a AVI con FFmpeg para que la muchacha los pudiera trabajar (ya que más bien la cámara los guardaba en MOV pero por el proceso de restauración quedaron en un formato bruto que difícilmente se puede trabajar con plataformas diferentes a Linux para lo que ella necesitaba (edición de los videos con algún software básico).

Y aquí termina mi anécdota del día, me pareció algo bastante curioso que tenía que compartirles, a ver si algún día les sirve esta experiencia que relaté.