[前へ] [次へ] [目次]

## 圧縮

`ebzip` (`ebunzip --compress`、 `ebzipinfo --compress` と等価) は CD-ROM 書籍の圧縮を行います。

### 圧縮の実行例 (1)

この節では、ハードディスクにすでにコピーしてある CD-ROM 書籍を圧縮するには どうしたらいいかを説明します。 CD-ROM 書籍がすでに `/dict` にコピーされているものの、まだ圧縮 されていないと仮定します。 この書籍は `/dict` の下に、次のようなファイルを持っています。

>     /dict/catalog
>     /dict/language
>     /dict/kanji/start
>     /dict/english/start

この書籍を圧縮するには、次のようにします。

>     % cd /dict
>     % ebzip

これは次のようにしても同じです。

>     % ebzip --output-directory /dict /dict

圧縮には、しばらくかかることがあります。 圧縮の間、`ebzip` は、次のように状況を知らせるメッセージを出力 します。

>     ==> /dict/kanji/start を圧縮 <==
>     ./dict/kanji/start.ebz に出力
>      1.0% 処理済み (2097152 / 220069888 バイト)
>      1.9% 処理済み (4194304 / 220069888 バイト)
>      2.9% 処理済み (6291456 / 220069888 バイト)
>             : (略)
>     完了 (220069888 / 220069888 バイト)
>     220069888 -> 78163751 バイト (35.5%)

圧縮が完了すると、`/dict` の下のディレクトリ構成が少し変化して いるのが分かります。

>     /dict/catalog
>     /dict/language.ebz
>     /dict/kanji/start.ebz
>     /dict/english/start.ebz

拡張子 `.ebz` がいくつかのファイル (`/dict/language.ebz`、`/dict/kanji/start.ebz`、 `/dict/english/start.ebz`) に付いています。 これらが圧縮されたファイルです。 他のファイルは変化していません。

`ebzip` が圧縮するファイルは、 `START`、`HONMON`、`HONMON2`、 `HONMONS`、`LANGUAGE` ファイルと `GAIJI` ディレクトリにある外字ファイルです。

### 圧縮の実行例 (2)

この節ではもう一つ別の例として、CD-ROM ディスクのファイルを圧縮し、それ をハードディスクに置く方法について説明します。 元の CD-ROM 書籍が `/cdrom` にマウントされ、書籍は `/cdrom` の下に次のようなファイルを持っていると仮定します。

>     /cdrom/catalog
>     /cdrom/language
>     /cdrom/german/start
>     /cdrom/french/start
>     /cdrom/italian/start

この書籍を圧縮し、`/dict` の下に置くためには、次のコマンドを 実行します。

>     % cd /dict
>     % ebzip --keep /cdrom

これは次のようにしても同じです。

>     % ebzip --keep --output-directory /dict /cdrom

出力側のディレクトリ `/dict` は空でも構いませんが、圧縮前に あらかじめ作っておかなければならないので、注意して下さい。 この例では、`--keep` オプションを使っています。 特に指定しなければ、`ebzip` は、圧縮後に元のファイルを削除 しますが、`--keep` オプションはこの振る舞いを抑制します。

`/dict` と `/cdrom` のディレクトリ構成はほとんど 同じですが、`/dict` の下の圧縮されたファイルには拡張子 `.ebz` が付いています。

>     /dict/catalog
>     /dict/language.ebz
>     /dict/german/start.ebz
>     /dict/french/start.ebz
>     /dict/italian/start.ebz

中間のディレクトリ `/dict/german`、`/dict/french`、 `/dict/italian` は、もし無ければ `ebzip` によって 作成されます。 `catalog` と `catalogs` は、出力側のディレクトリ にコピーされます。 EB ライブラリが対応していないファイル、ディレクトリについては、 `ebzip` は無視します (圧縮もコピーもしません)。

### 圧縮レベル

`ebzip` は、0 〜 5 という 6 つの圧縮レベルを持っています。 圧縮レベル 0 は、圧縮・伸長が最も速いですが、圧縮率は最悪です。 圧縮レベル 5 は、圧縮率が最良ですが、圧縮・伸長は最も遅くなります。 圧縮レベルは、`--level` (`-l`) オプションで設定します。

>     % ebzip --level 2 --output-directory /dict /dict

無指定時のレベルは 0 (最速だが圧縮率は最悪) です。

### テスト

`ebzip` を `--test` (`-t`) オプション付き で実行すると、`ebzip` は圧縮したデータを実際のファイルには 書き込まなくなります。 圧縮する前に圧縮後のファイルの大きさを知りたいときに、便利です。

>     % ebzip --test /dict /dict

### 一部だけの圧縮

なにも設定しないと、`ebzip` は書籍一冊の全体を圧縮しますが、 `--subbook` (`-S`) や `--skip-content` (`-s`) オプションを使うと一部だけを圧縮できます。

`--subbook` オプションは引数を一つ取り、そこにカンマ (`,`) で区切って、圧縮したい副本のディレクトリ名を並べて 書きます。 `ebinfo` コマンドを用いると、あなたの所有している書籍に どのような副本が含まれているのかを知ることができます。

>     % ebinfo /mnt/cdrom
>     ディスクの形式: EB/EBG/EBXA/EBXA-C/S-EBXA
>     文字コード: JIS X 0208
>     副本の数: 3

>     副本 1:
>       題名: 新英和辞典（第四版）
>       ディレクトリ: english
>       検索方式: 前方一致 後方一致 条件 メニュー
>       フォントの大きさ: 16 24 30 48
>       半角フォントの文字: 0xa121 -- 0xa24e
>       全角フォントの文字: 0xa321 -- 0xa27e

>     副本 2:
>       題名: CD-ROM 仏和辞典（第三版）
>       ディレクトリ: french
>       検索方式: 前方一致 後方一致 条件 メニュー
>       フォントの大きさ: 16 24 30 48
>       半角フォントの文字:
>       全角フォントの文字: 0xa321 -- 0xa27e

>     副本 3:
>       題名: ポケット独和辞典（第三版）
>       ディレクトリ: german
>       検索方式: メニュー
>       フォントの大きさ: 16 24 30 48
>       半角フォントの文字:
>       全角フォントの文字: 0xa321 -- 0xa27e

(`ebinfo` コマンドに関しての詳細は、 ebinfo コマンドのマニュアル を参照のこと。) この例では、3 つの副本が書籍には含まれており、それらのディレクトリ名は `english`, `french`, `german` だということが分かります。

`english` と `german` だけを圧縮するには、次の ようにします。

>     % ebzip --subbook english,french /dict

ディレクトリ名の大文字、小文字の違いは無視されます。 `--subbook` の引数は、次のように分けて書くこともできます。

>     % ebzip --subbook english --subbook french /dict

残りの副本 (この例では `german`) のファイルは圧縮されることも コピーされることもありませんので、この時点ではまだこの書籍に対する圧縮の 作業は完了していません。 この書籍を使用するためには、さらなる操作を行って残りの副本を圧縮するか、 `ebrefile` コマンドを使って残りの副本を `catalog(s)` ファイルの副本登録リストから削除しなくてはなりません (`ebrefile` コマンドについて詳しくは、 ebrefile コマンド のマニュアル の「`ebzip` との連携」項を参照のこと)。

副本の一部ずつを複数回に分けて圧縮する場合、すべての副本で同じ圧縮レベル を指定する必要はありません。 (たとえば、`english` と `french` はレベル 0 で圧縮し、 `german` はレベル 2 で圧縮する)。

`--skip-content` (`-s`) は `--subbook` に似ていますが、`--skip-content` では無視するファイルの データ型を指定します。

>     % ebzip --skip-content sound,movie --subbook french /dict

この例では、`ebzip` は音声と動画ファイルを飛ばします。 現在のところ、`ebzip` によって認識されるデータ型は、 次の通りです。

- `font`
  外字のフォント
- `graphic`
  画像データ
- `sound`
  音声データ
- `movie`
  動画データ

### 古いファイルの上書き

書き込もうとしたファイルがすでに存在するとき、`ebzip` は 上書きして良いかどうかの確認を求めてきます。

>     ==> /dict/science/data/honmon を圧縮 <==
>     /dict/science/data/honmon.ebz に出力

>     ファイルがすでに存在します: /dict/science/data/honmon.ebz
>     上書きしますか (はい:y, いいえ:n)?

`y` か `n` で答えて下さい。 `n` と答えると、`ebzip` はそのファイルを飛ばして、 次に進みます。

`--force-overwrite` オプションを指定すると、`ebzip` はすでに存在しているファイルを、確認なしに上書きします。 同様に、`--no-overwrite` オプションを指定すると、 `ebzip` は確認なしにそのファイルを飛ばして次に進みます。

### 圧縮された書籍の圧縮

S-EBXA および EPWING 規格においても圧縮形式を定義しており、CD-ROM 書籍 にはこれらの圧縮形式を実際に採用しているものがあります。 これらの圧縮形式は、ebzip の圧縮形式とは異なるものです。

`ebzip` は S-EBXA や EPWING 圧縮形式で圧縮された CD-ROM 書籍も 伸長することができますが、圧縮することはできません。

`ebzip` に対して、既に圧縮されている CD-ROM 書籍を圧縮するように 命じると、`ebzip` はいったん書籍を伸長してから、ebzip の圧縮形式で 圧縮し直します。

一般に ebzip の圧縮形式の方が S-EBXA や EPWING の圧縮形式よりも圧縮率が 良好です。

[前へ] [次へ] [目次]