Nel corso del mio lavoro è capitato alcune volte di dover “rinnovare” dei server di dominio,
nello svolgere questo tipo di operazione normalmente è necessario migrare i file contenuti nelle varie cartelle condivise dal vecchio al nuovo server, in alcuni casi per un problema di codifica dei caratteri (locales) succede un macello,
tutti i nomi dei file contenenti lettere accentate e simboli particolari apparentemente si corrompono;
se andiamo a verificare dal terminale saltano fuori degli strani simboli o punti interrogativi al posto di queste lettere:
questo comporta anche l’inaccessibilità, per quei pc che accedono alle condivisioni in rete, di questi file e cartelle “corrotti”,
in realtà questi file non si sono corrotti, è solo un problema di mappatura dei caratteri, il nome è scritto correttamente ma viene interpretato in maniera errata:
nei vecchi server SAMBA, alcuni “tecnici” (per così dire) per ovviare ai problemi di compatibilità in maniera sbrigativa, spesso impostavano la locale di Windows (ISO-8859-15) a livello di sistema,
io sono solito mantenere le mie macchine tutte standard in UTF-8.
Trasferendo i file dai vecchi dischi con file scritti in ISO-8859-15, portiamo dentro dei nomi che non sono del tutto compatibili con la nostra codifica dei caratteri.
per risolvere esiste un tool:
convmv
per installarlo su server debian e derivate:
apt-get install convmv
su macchine openSUSE:
zypper in convmv
adesso che abbiamo il nostro tool, non ci rimane che usarlo:
convmv -r -f ISO-8859-15 -t it_IT.UTF-8 /percorso/file/problematici/
questo comando analizza in maniera ricorsiva tutti i file e le sottocartelle a partire dal path specificato, cercando file con codifica ISO-8859-15 e convertendoli in it_IT.UTF-8;
lanciandolo ci mostrerà tutti i file trovati con codifica errata e come li correggerà, in questa fase non effettua nessuna modifica, ci mostra solo i cambiamenti da apportare.
Se ciò che vediamo ci soddisfa, non rimane che applicare il tutto aggiungendo il parametro
--notest
convmv --notest -r -f ISO-8859-15 -t it_IT.UTF-8 /percorso/file/problematici/
ovviamente, conoscere in anticipo la codifica di partenza aiuta parecchio a risolvere rapidamente il problema,
se non la conosciamo bisogna andare un po’ per tentativi, il comando
convmv --list
ci mostrerà tutte le possibili codifiche e provare ad usarne alcune come codifica di partenza
se i file trovati non corrispondono alla codifica selezionata il tool darà errore quindi procediamo a provare con un’altra.