Arxius

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.


  • Samba 2.x per defecte guarda els noms de fitxers amb ISO-8859-15 o similar, és a dir, per defecte ho guarda amb el tipus de charset del sistema i no amb UTF
  • Samba 3.x per defecte ho guarda amb codificació UTF
  • La distribució que treballem guarda amb sistema ISO-8859-15, no UTF (era el cas concret)


    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
    Arxius