2006年 05月 25日
大失敗していました
大変なことをしてしまったかも」 というのは、sambaで使用しているディレクトリの文字コードを変換してしまったのです。

 CAPエンコードされていたので、一覧をJISコードのファイルにしてみようと思ったのです。

SMBCHARTOOL をつかって、とりあえず変換できるかどうかを試してみようと
「captojis」でエラー出力をファイルにリダイレクトするつもりでした。

このページによると、

# euctohex -d /home/samba/share/

のように、-d オプションをつけますと、実際のファイル操作を行わずに、動作の様子(リンクをはるとか、ファイルを消すとか)を標準エラー出力へと出力します。

また、このような利用方法を好まない管理者のために、別の文法も用意されています。コマンド名に関わらず、-a オプションの指定により動作を変更できます。その場合、本コマンドは smbfnconv の名前で参照できて、

# smbfnconv -a euctohex /where/want/to/conv

のようにして用います。コマンド名より常に -a オプションが優先するため、

# euctohex -a captojis /where/to/conv

のように利用可能ですが、混乱するため推奨しません。

例が「euctohex」で「-d」オプションの続きにそのまま書いてあるから
  # euctohex -d /home/samba/share/
のコマンドは、
  # smbfnconv -a euctohex /where/want/to/conv
としてもいいのだろうと読み取ったのです。

  !!!!これが大きな間違い!!!!

「smbfnconv」が本当のコマンドで、「euctojis」はそれにリンクが張られるだけ。自分がナンと言う名前で呼び出されるかで処理内容を変えるのですが、
  本名で呼ばれた場合、どの処理をするのかを 「-a」オプションで指定するのだ
という説明だったのです!
 つまり「-d」の機能は「-a」にはないので、ファイル名変換を「実行」してしまったのでした。

おかげで、文字化けするファイルばかりになりました。
 また、JISコードに変換できないディレクトリとかファイル名があったため、ごちゃ混ぜ状態。
 2万個を超えるファイル名の中から、JISコードになったファイル名をCAPコードに変換しないといけないという事態に。
 ちなみに、JIStocapは使えません。ディレクトリ名の「/」を変換してパス名を含んだファイル名に変換するんです。
 1昼夜かけてディレクトリ名をCAPにしました。これですべてのファイルにアクセスできるようになりました。
 あとは、ファイル名の変換だけ。1昼夜かかるだろうなぁ。
[PR]

by ji3faf | 2006-05-25 14:58 | システム管理


<< HDDにのろわれているのか      電話で話すと様子が似ている部屋 >>


にほんブログ村 教育ブログへ




Map