![]() |
[ News | Documentation | Project | Event | Users Group | Mailing List ] |
三浦広志(miura@samba.gr.jp)
SMBCHARTOOLは、Sambaのコンパニオンツールで、Samba サーバ上の日本語ファイル名の文字コードを一括変換することで、Sambaサーバを運用する管理者を支援するツールです。
現在は euc, hex, jis, cap, sjis の各文字コードに対応しています。また、変換だけでなく旧バージョンにおける文字化けに対しても、修復します。
このツールは、Sambaサーバを日本語の環境で運用している場合に有効です。
日本語の環境を使用する際には、管理者は5つの文字コードやコード表現方法から選ぶ必要があります。この文字コードは、バージョンや環境により、最適なものが違うため、環境やバージョン、運用方法の変化により、変更を必要とされる場合があります。
その一方、本格的に運用されてきたサーバの場合、すでに多数のファイル/ディレクトリが存在し、容易に環境を変更できるものではありません。
そこで、すでにあるファイル資産を容易にあたらしい文字コードに変更できるよう、このツールが整備されました。
これで、最初にどの文字コードを選択しても、いつでも変更できるようになります。たとえば、最初EUCだったけど、netatalkもいれることになったのでCAPにしたいとか、サーバがHP-UXにアップグレードしたので、SJISにしたいなどに対応します。
さらに、Samba 2.0.7 日本語版において、機種依存文字が正式サポートされたのを受けて、過去の正しくない文字コードのファイル名を修正可能になっています。
完全復旧不可能な文字は、下駄文字になります。その結果、すべてのファイルは読み書き可能となり少なくとも資産が守られます。
また、移行時以外にも、本ツールは工夫により、有効に利用できます。たとえば、ディスク容量をとらないファイルの短期バックアップや、webによるファイル検索システムへの応用などです。
また、sambaの日本語挙動の動作確認用のツールも同梱されます。
詳しくは、 その他のツールをみてください。
現在の最新版は smbchartool Ver.1.7です。
SMBCHARTOOL は 日本Samba ユーザ会ダウンロードサイトからダウンロード可能です。
サイト中の unoff-tool/smbchartool/
以下を参照してください。
なお、Samba 2.0.7 日本語版の次期バージョンにも
samba-2.0.7-ja-*/example/smbchartool/
に同梱される予定です。
本ツールは、Perlバージョン5以降の機能を使用して作成されています。
したがって、ユーザは、Perlのバージョン5をインストールしなければなりません。ここでは、Perlのインストールについては扱いません。
なお、本ツールはJPerl(日本語化されたPerl)では動作を保証いたしません。
また、日本語の処理のために、jcode.plというライブラリを使用しています。各自の環境にjcode.plが必要です。本パッケージに同梱されていますので、あなたの環境でjcode.plがない場合には、perlのライブラリのあるディレクトリへ、このファイルをおいてください。
tar xzvf smbchartool-x.y.tar.gz
のようにすれば、展開できます。
cd smbchartool-x.y
として、展開されたディレクトリへ移動してください。
本ツールは、標準入力に変換の対象となるファイル名、ディレクトリ名を受取ります。標準出力には、なにも出力しません。異常があった場合には、標準エラー出力へメッセージを出力します。特定のオプションを与えることにより、実際に処理を行わずに、動作を確認することができます。
変換できる文字コードは5種類です。これらを相互に変換できます。どれからどれへ変換するかは、コマンド名により決定されます。
文字コード: euc, jis, sjis, cap, hex コマンド名の命名規則: <元文字コード>"to"<新文字コード> 例) euctohex
また、Samba日本語版での過去のバージョンからの文字コードの非互換性に対してサポートするため、sjistosjis, hextohex, captocap, euctoeuc, jistojis の5つのコマンドがサポートされます。これらのコマンドは、元のコードからいったん、SJISへ変換し、SJIS正規化をおこないまた、元のコードへと変換します。
したがって、25通りのコマンド名をとることになります。本ツールは呼び出されたコマンド名で動作を変えるようつくられております。
このツールは、以下のようにして使用します。
なお、前のバージョンとは引数の与えかたが変わっています。注意してください。
# euctohex /home/samba/share/
この例では、/home/samba/share配下のファイルすべてについて、eucの文字コードからhexへと変換されます。
もし、変換前のファイルを残したい場合は、
# euctohex -l /home/samba/share/
のように、-lオプション (linkの意味です)をつけると、元のファイルをハードリンクとして残します。
# euctohex -l -p /where/to/link /home/samba/share/
のように、さらに -p オプションを付加することに同じディレクトリではなく、同じファイルシステム内の別のディレクトリへハードリンクを作成することができます。これは、ファイルのバックアップ用途や、namazuを利用したweb検索システムの構築に有効でしょう。
# euctohex -d /home/samba/share/
のように、-d オプションをつけますと、実際のファイル操作を行わずに、動作の様子(リンクをはるとか、ファイルを消すとか)を標準エラー出力へと出力します。
また、このような利用方法を好まない管理者のために、別の文法も用意されています。コマンド名に関わらず、-a オプションの指定により動作を変更できます。その場合、本コマンドは smbfnconv の名前で参照できて、
# smbfnconv -a euctohex /where/want/to/conv
のようにして用います。コマンド名より常に -a オプションが優先するため、
# euctohex -a captojis /where/to/conv
のように利用可能ですが、混乱するため推奨しません。
アーカイブには、ほかにSambaおよび本ツールの動作確認用のファイル生成コマンドと、外字およびIBM拡張漢字からなるファイルが同梱されています。
本ツールのドキュメントは現状整備されていません。本ファイルに記述されていないことは、ソースを確認するほかに、確認する手段はありません。
本ツールには、サポートはありませんが、作者や利用者が多くあつまるメーリングリストにて機能改善や議論を受け付けます。本ツールはSambaとともに使われることを想定しているため、samba-jpメーリングリストにて議論するものとします。
このツールは、GNU Public Licence のバージョン2ないしはそれ以降のライセンスにより提供されます。ライセンスは、同梱のCOPYING.txtファイルを参照してください。