|
Samba 国際化プロジェクト > Samba 2 日本語版の日本語ファイル名の Samba 3 への移行方法
Samba 2 日本語版の日本語ファイル名の Samba 3 への移行方法目次
1. smb.conf のパラメータ変更Samba 3 では smb.conf での文字コード指定方法が変更になった事により、Samba 2 日本語版から移行に関しては、smb.conf の書き換えが必要になります。 次のパラメータの変更が必要です。
各々のパラメータの意味は次の通りです。
各パラメータで指定する値は、iconv() 関数で使用できる文字コード名(codeset名) が指定可能です。 ただし、日本語文字コードの場合、Windows の機種依存文字の有無および一部の JIS 文字の Unicode とのマッピングがマイクロソフト独自になっているものがあるため、 一般的な名称ではなく、次の文字コード名を指定する必要があります。
2. Samba 2 日本語版と Samba 3 での文字コード名の対応関係Samba 2 日本語版で使用していた文字コード名と Samba 3 での文字コード名の対応 は次のようになります。cap, hex に関しては、iconv() による文字コード変換では なく vfsモジュールによる対応になります。
Samba 3 での hex および cap は、unix charset で cp932 を指定し、次のパラメー タを追加指定します。 vfs object = hex もしくは cap 注意事項: hex, cap は小文字で記述する必要があります。 3. 機種依存文字の互換性Windows の機種依存文字には、複数のコードポイントに重複して定義されている文字があります。 Windows のファイルシステムでは、それら重複符号文字に関して複数あるコードポイントのうち決まった 1 つのコードポイントを用いる事で、使用するコードポイントの異なった同じファイル名のファイルが作成されてしまう事を防いでいます。 Samba 2 日本語版や Samba 3 でも同様の処理が行われていますが、Samba 2 日本語版と Samba 3 では一部の重複符号文字に関して異なるコードポイントが使用されてる文字があり以下に示すように、Samba 3 への移行に関してはファイル名に使用されている重複符号文字の一部に関してコードポイントの置換が必要となります。 Samba 2 日本語版では、次の 13 文字に関して 表5 に示すように IBM拡張文字のコードポイントが用いられています。
Samba 3 では、文字コード変換に iconv() 関数を使用している為、これら 13 文字は、表6 に示すように NEC特殊文字のコードポイントを用いるようになります。
この為、Samba 2 日本語版で作成された日本語ファイル名で、上記 13 文字を含むものを Samba 3 で読み書きすると、読み込んだ時のファイル名とは異なるコードポイントを用いたファイル名でファイルが作成されてしまう事になります。 Linux 等では、それぞれのファイル名を別のものとして扱いますが、Windows とSamba は同一のものとして扱おうとするために、ファイルに正しくアクセス出来ないという問題が生じます。 このような問題がある為、Samba 2 日本語版で運用していた共有ディレクトリをSamba 3 で引き継いで利用する際には文字コードの変更が無い場合でも、上記13文字のコードポイントの置換が必要となります。 4. SMBCHARTOOL のセットアップsmbfnconv の文字コード変換に Text::Iconv モジュールを使用するようにし、なおかつ Samba 2 日本語版 / Samba3 両方のファイル名文字コードを扱えるようにしました。 iconv コマンド同様に -f, -t オプションで任意の組み合わせで指定可能です。 -t に cap/hex を指定した場合は、デフォルトで Samba 3 用のファイル名に変換するので、Samba 2 日本語版用の cap/hex へ変換する場合は、-2 オプションを追加指定するようにしてあります。 インストールに必要なもの
SMBCHARTOOL インストール方法
5. Samba 2 日本語版で作成したファイルの Samba 3 への移行方法ここでは、Samba 2 日本語版で使用していた文字コード別に Samba 3 移行方法を説明します。 移行に際しては、smb.conf の文字コード関連パラメータの書き換えと、ファイル名の変換が必要となります。 ファイル名の変換は、SMBCHARTOOL Ver.3.0 以降の smbfnconv コマンドを使い、Samba 2 日本語版のファイル名を別ディレクトリに残しつつ、Samba 3 用のファイル名はそちらへのハードリンクとして作成します。 ハードリンクを使用する為、別パーティションへは Samba 3 用のファイル名を作成する事が出来ませんがディスク消費を抑える事が出来ます。また、万が一、Samba 3への移行で問題が生じた場合にも速やかに、以前の状態に戻す事が可能です。 coding system = sjisSamba 3 のシフトJIS符号化方式 (cp932) への移行smb.conf 設定dos charset = cp932 display charset = cp932 unix charset = cp932(※1) (※1)ファイル名文字コード指定 $ mv 共有ディレクトリ 共有ディレクトリ.samba2 $ mkdir 共有ディレクトリ $ cd 共有ディレクトリ.samba2 $ smbfnconv -f sjis(※2) -t cp932(※3) -p ../共有ディレクトリ .
(※2)Samba 2 文字コード指定 coding system = eucSamba 3 の日本語EUC符号化方式 (eucJP-ms) への移行smb.conf 設定dos charset = cp932 display charset = cp932 unix charset = eucjp-ms $ mv 共有ディレクトリ 共有ディレクトリ.samba2 $ mkdir 共有ディレクトリ $ cd 共有ディレクトリ.samba2 $ smbfnconv -f euc -t eucjp-ms -p ../共有ディレクトリ . coding system = euc3Samba 3 の日本語EUC符号化方式 (eucJP-ms) への移行smb.conf 設定dos charset = cp932 display charset = cp932 unix charset = eucjp-ms $ mv 共有ディレクトリ 共有ディレクトリ.samba2 $ mkdir 共有ディレクトリ $ cd 共有ディレクトリ.samba2 $ smbfnconv -f euc3 -t eucjp-ms -p ../共有ディレクトリ . coding system = utf8Samba 3 の UTF-8 符号化方式への移行smb.conf 設定dos charset = cp932 display charset = cp932 unix charset = utf-8 Samba 2 日本語版で作成されたファイル名をそのまま利用可能です。 coding system = hexSamba 3 の hex (cp932+hexモジュール) への移行hex は文字コード指定 (unix charset) ではなく、hex モジュールを組み込む形で実現します。unix charset は cp932 を指定する必要があります。 smb.conf 設定dos charset = cp932 display charset = cp932 unix charset = cp932 vfs object = hex 注意事項: hex は小文字で記述する必要があります。 ファイル名の変換手順$ mv 共有ディレクトリ 共有ディレクトリ.samba2 $ mkdir 共有ディレクトリ $ cd 共有ディレクトリ.samba2 $ smbfnconv -f hex -t hex -p ../共有ディレクトリ . coding system = capSamba 3 の cap (cp932+capモジュール) への移行cap は文字コード指定 (unix charset) ではなく、cap モジュールを組み込む形で実現します。unix charset は cp932 を指定する必要があります。 smb.conf 設定dos charset = cp932 display charset = cp932 unix charset = cp932 vfs object = cap 注意事項: cap は小文字で記述する必要があります。 ファイル名の変換手順$ mv 共有ディレクトリ 共有ディレクトリ.samba2 $ mkdir 共有ディレクトリ $ cd 共有ディレクトリ.samba2 $ smbfnconv -f cap -t cap -p ../共有ディレクトリ . |
|