Cuando transportamos un sistema de archivos CMS y un volcado mysql vía rsync de un servidor Linux a otro servidor Linux, usamos un MacOS en el medio para almacenar los datos temporalmente. Después de que el CMS estaba en el otro servidor Linux, todos los archivos de imágenes estáticas estaban disponibles. Pero todos los nombres de archivos con diéresis en alemán no fueron encontrados por el CMS, aunque eran visibles y accesibles. Rápidamente nos dimos cuenta de que esto es exactamente lo que sucede:
Cuando creo un nombre de archivo con diéresis alemanas en Linux como este:
linux$ mkdir umlauttest
linux$ touch umlauttest/äöü
Y luego ir a un Mac y emitir allí un rsync para copiar el directorio a mi Mac...
mac$ rsync -a user@linux:umlauttest .
Y luego lo copio de mi Mac a Linux:
mac$ rsync -a umlauttest/. user@linux:umlauttest2
Entonces tengo un problema en mi Linux, porque el nombre del archivo está como roto.
linux$ diff umlauttest umlauttest2
Only in umlauttest2: äöü
Only in umlauttest: äöü
Eso es, porque MacOS está convirtiendo los caracteres del nombre de archivo en caracteres compuestos de Unicode, lo que es realmente algo que yo llamo "mangling meta data". Este comportamiento también surge al usar scp
para copiar archivos.
¿Hay alguna manera de evitar que esto suceda?