Problemas con archivos y carpetas con nombres que contienen diéresis

Acabo de notar algunos problemas al explorar mi colección de música externa usando Finder, faltaban ciertas carpetas de artistas.

Al ir a iTerm y lsabrir la carpeta, obtuve esto como informe inicial:

ls Music
ls: Maná: No such file or directory
ls: Márta Sebestyén: No such file or directory
ls: Motörhead: No such file or directory
ls: Zoë Keating: No such file or directory

Tenga en cuenta que los nombres de los artistas usan diéresis y acentos agudos dobles.

Esta es una carpeta en una caja NAS (ReadyNAS 204) a través de smb, también tengo una copia de seguridad del NAS con acceso a Ubuntu a través de CIFS.

Al usar Finder en OS X El Capitan, ni el NAS ni la copia de seguridad muestran estas carpetas. Sin embargo, usando Yosemite puedo ver la carpeta Artistas pero faltan los álbumes.

Al iniciar sesión directamente en las casillas, todos los archivos parecen estar intactos y SONOS aún puede reproducirlos.

¿Ha cambiado algo en OS X? Utilicé max para extraerlos de los CD (Snow Leopard), así que tuve que poder manejar los archivos en algún momento ‽

NB: ‽ es un interrobang

Actualizar con un poco más de información

Usando rsync desde la Mac para copiar música en una unidad USB (formato extendido OS X), veo cosas como:

rsync -av --iconv=utf8-mac,utf8 /Volumes/share/Music/ /Volumes/usbdisk/Music/

file has vanished: "/Volumes/share/Music/.../Márta Sebestyén"
file has vanished: "/Volumes/share/Music/.../Maná"
file has vanished: "/Volumes/share/Music/.../Zoë Keating"
file has vanished: "/Volumes/share/Music/.../Rammstein-2005-Rosenrot-07-Zerstören.flac"

ssh'ing en el servidor Ubuntu y usando convmv como se describe aquí :

cd /mnt/Music
convmv -r -f ISO-8859-1 -t UTF-8 . 

Vuelve :

Starting a dry run without changes...
Skipping, already UTF-8: ./Márta Sebestyén
Skipping, already UTF-8: ./Maná
Skipping, already UTF-8: ./Michael Bublé
Skipping, already UTF-8: ./Zoë Keating
Skipping, already UTF-8: ./Rammstein/1999-Live aus Berlin/Rammstein-1999-Live aus Berlin-10-Bück dich.flac
Skipping, already UTF-8: ./Rammstein/1999-Live aus Berlin/Rammstein-1999-Live aus Berlin-03-Weißes Fleisch.flac
No changes to your files done. Use --notest to finally rename the files.

Parece que los archivos principales que tienen problemas ya son utf-8, pero tenga en cuenta que el archivo "Rammstein-2005-Rosenrot-07-Zerstören.flac" con el que rsync tuvo problemas no figura en el informe anterior.

También usé brew para instalar la última versión de rsync 3+ en lugar de la versión 2.6 que se usa por defecto.

brew tap homebrew/dupes
brew install rsync

Y luego edite /private/etc/paths para poner /usr/local/bin antes de /usr/bin

Probando AFP

Habilitar AFP en Ready NAS (OS 6.4.2), bueno, esto fue un poco extraño para mí. La estructura es Artist/Album/Tracks.flac. Los artistas están allí, el álbum estaba allí, expanda el álbum para ver las pistas que la carpeta Artistas desapareció.

Artista

Álbum

Los artistas desaparecieron al intentar ver las pistas.

ReadyNAS smb.conf

[global]
 dos charset = CP1252
 unix charset = UTF-8

Información relacionada

¿Las carpetas no aparecen en Finder?
Problemas de CIFS y MAC con caracteres especiales en los nombres de las carpetas .

Traté de reproducir su problema en una máquina virtual ReadyNAS-OS-6.4.2 pero no tengo ningún problema para acceder a ReadyNAS con nombres de carpetas que contienen diéresis usando 10.8-10.11. Supongo que está relacionado con /etc/samba/smb.conf. Agregue el contenido (relacionado con juegos de caracteres) del archivo. ¿También intentaste acceder a las carpetas a través de AFP?
El problema es que en El Capitán, el sistema de archivos reemplaza las diéresis con la letra normal seguida de un marcador de diáresis, por lo que hace de un carácter, digamos "ä" 'LETRA A MINÚSCULA LATINA CON DIÁERESIS' (U+00E4) dos caracteres, en este ejemplo, »a« 'LETRA A MINÚSCULA LATINA' (U+0061) seguido del marcador de diáresis » ̈« 'DIÉRESIS COMBINADA' (U+0308). Esto también es un problema cuando descarga un archivo con diéresis en su nombre y luego vuelve a cargar este archivo al servidor. Entonces de repente tienes dos archivos en el servidor.
¿Hay alguna noticia sobre este tema? Parece que tengo problemas similares cuando trato de copiar y pegar un archivo con diéresis de un recurso compartido de AFP: Finder los muestra correctamente, pero copiar y pegar no funciona.
No hice ningún progreso en la solución del problema.

Respuestas (1)

macOS y Linux usan diferentes estilos UTF-8. convmv puede convertir entre esos dos con las opciones --nfc / --nfd. En su NAS basado en Linux, haga esto:

convmv -r -f UTF-8 -t UTF-8 --nfc  .

Desde la página man de convmv:

HFS+ en OS X/Darwin Linux y (¿la mayoría?) otros sistemas operativos similares a Unix utilizan el llamado formulario de normalización C (NFC) para su codificación UTF-8 de forma predeterminada, pero no lo imponen. HFS+ en Macintosh OS impone la forma de normalización D (NFD), donde algunos caracteres se codifican de forma diferente. En OS X no es posible crear nombres de archivo NFC UTF-8 porque esto se impide en la capa del sistema de archivos. En HFS+, los nombres de archivo se almacenan internamente en UTF-16 y cuando se vuelven a convertir a UTF-8 (porque el sistema operativo basado en Unix no puede tratar directamente con UTF-16), se crea NFD por cualquier motivo. Consulte http://developer.apple.com/qa/qa2001/qa1173.htmlpor fallas. Creo que fue una muy mala idea y rompe muchas cosas en OS X que esperan un sistema normal conforme a POSIX. En cualquier otro lugar, convmv puede convertir archivos de NFC a NFD o viceversa, lo que facilita mucho la interoperabilidad con dichos sistemas.

Por cierto: esto solo sucede cuando transfieres tus archivos desde una partición HFS+. APFS ya no aplica NFD.