Samba 3.x, codificació del nom de fitxer: ISO-8859-15/UTF
Escrit al 2006-12-17 00:00:00 per cpina
Treballant amb Samba 3.x es guarda per defecte el nom dels fitxers amb codificació UTF8. Això, en alguns casos pot no interessar: si no tenim el sistema sencer amb UTF8 i no ens interessa migrar.
Amb aquest escrit veurem com fer que Samba 3.x desi els fitxers amb codificació ISO-8859-15 (o la del sistema), i també com canviar el nom dels fitxers que tenim guardats d'UTF8 a ISO-8859-15.
Fa uns dies em vaig trobar amb una sèrie de problemes amb Samba. Tot i no ser "molt difícil" tenien el seu què, almenys per mi, que sempre em temo les codificacions de caràcters.
No sóc un expert del tema. Només exposaré el què vaig veure i com ho vaig solucionar. Hi pot haver alguna apreciació incorrecte, si és així demano disculpes (i podeu deixar un comentari...)
Exposaré només els fets, no com vaig arribar a veure-ho tot plegat.
Si Samba guarda amb tipus UTF però el sistema no, els caràcters amb accents es desdoblen (són dos caràcters erronis)
Si volem fer fitxers al sitema o via Samba i que no hi hagi problemes amb accents, cal tenir-ho tot amb el mateix sistema. Sinó, quan es fan amb UTF (Samba 3.x per defecte) i no visualitzem amb UTF es veuen dos caràcters erronis quan hi ha accents. O bé, si el fitxer està fet al sistema Samba mostrarà caràcters erronis, etc.
Configurar Samba:
Si volem que Samba 3.x guardi en codificació ISO-8859-15 cal posar a /etc/samba/smb.conf, a la secció general: unix charset = ISO-8859-15. Llavors els fitxers creats al sistema i via Samba no seran UTF i tot anirà bé. El unix charset hauria de ser igual que el del locale per defecte (si no volem tenir problemes, etc.)
També es pot migrar el sistema a UTF, però per varis motius no interessava.
Canviar els noms dels fitxers ja existents:
Queda un tema pendent: què fer amb els fitxers que potser han estat creats amb UTF però ara volem el seu nom codificat amb ISO-8859-15? Es pot fer servir el programa convmv, paquet a Debian amb el mateix nom. Es pot cridar perquè canviï tots els fitxers d'un directori i subdirectoris de cop, però no anava massa bé així que ho vaig fer fer d'un amb un. Amb un script tipus:
#!/bin/bash
convmv -f utf8 -t iso-8859-15 --notest --qfrom --qto "$1"
i llavors cridar a find amb:
find . -depth -exec canvia.sh {} \;
El -depth és perquè find primer processi els fitxers amb més profunditat i després els de menys profunditat. Sinó podriem estar canviant el nom del directori pare d'altres subdirectoris i que no es completés el canvi de nom.
Un cop fet això, tindrem el sistema sense UTF (era un requeriment), el Samba 3.x treballant sense UTF i els fitxers nous i vells sense UTF.
Canviant lleugerament tot plegat, es pot tenir Samba 2.x amb UTF, o podriem canviar els fitxers de ISO-8859-15 a UTF, etc. només amb les eines vistes.
Categories: Articles, Servidor
Comentaris
- Sense comentaris