Samba で日本語名フォルダがうまく扱えない時は
以前 Samba 2 サーバ上にあったファイルをごっそり他のサーバに移し,そこで新たに Samba 3 サーバを立ち上げた.ところが,日本語を含むフォルダ名にアクセスしようとすると困ったことが起こる.ちなみに旧サーバでは coding system = SJIS だった.
(1) 文字コードを EUC にした場合:
smb.conf で,
display charset = CP932 unix charset = EUC-JP # EUCJP-MS でも同様 dos charset = CP932
とすると,日本語名ファイルを含むフォルダにアクセスできない.まあこれは旧サーバが SJIS だったからだろう.ちなみにこれは既存のフォルダの場合のみの現象で,新規フォルダの作成は問題ない.
(2) 文字コードを SJIS or UTF-8 にした場合:
smb.conf で,
display charset = CP932 unix charset = SJIS dos charset = CP932
とすると,既存のフォルダの閲覧は問題ないが,新規フォルダを作成すると奇妙なことが起こる.ファイル階層のデリミタ (UNIX では「/」,Windows では「\」) がアンダースコア「_」に変換されてしまい,階層情報が失われてしまうようだ.
例えば,「フォルダ1」の内部に「ファイル1」「ファイル2」を作り,Samba 経由で「フォルダ1」をコピーしたとしよう.
- フォルダ1
- ファイル1
- ファイル2
- ファイル1
- フォルダ1 (中身は実質的に空)
- フォルダ1_ファイル1
- フォルダ1_ファイル2