4

PDF のアーカイブに関するこの質問は、マスター テンプレート (レターヘッド) の上に行われた本質的に小さな変更である多くのファイルを (アーカイブ目的で) 圧縮したい場合、非常に大きな圧縮ゲインが得られるように思われます。ファイル間圧縮。

これをサポートする標準の圧縮/アーカイブ形式はありますか? 私の知る限り、一般的な形式はすべて、各ファイルの圧縮に重点を置いています。

4

3 に答える 3

6

いくつかの形式はファイル間圧縮を行います。

最も古い例は.tar.gzです。.tarには圧縮がありませんが、すべてのファイルを連結し、各ファイルの前にヘッダーを付けます。.gzは1つのファイルのみを圧縮できます。どちらも順番に適用され、Unixの世界では伝統的な形式です。.tar.bz2は同じですが、gzipの代わりにbzip2を使用するだけです。

最近の例は、オプションの「ソリッド」圧縮(RARや7-Zipなど)を使用した形式です。コマンドラインフラグまたはGUIオプションで有効にすると、圧縮前にすべてのファイルを内部で連結できます。

于 2008-11-05T20:17:12.700 に答える
3

Google の open-vcdiff を見てください。

http://code.google.com/p/open-vcdiff/

小さな圧縮デルタを計算するように設計されており、RFC 3284 を実装しています。

http://www.ietf.org/rfc/rfc3284.txt

Microsoft には、似たようなことを行うための API がありますが、標準の類似点はありません。

一般に、探しているアルゴリズムは、Bentley/McIlroy に基づくものです。

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.8470

特に、これらのアルゴリズムは、テンプレートのサイズが gzip で使用されるウィンドウ サイズ (~32k) または bzip2 で使用されるブロック サイズ (100-900k) よりも大きい場合に有利です。

それらは、圧縮された Web ページを保存するために、BIGTABLE 実装の内部で Google によって内部的に使用されます。その理由は、それらを探しているのとほぼ同じ理由です。

于 2008-11-05T19:07:52.107 に答える
2

LZW 圧縮 (ほぼすべてのユーザーが使用) には、必要に応じてスキーマなどの繰り返し文字のテーブルを作成することが含まれるため、アーカイブ全体を一度に解凍する必要が制限されます。

あなたの状況でこれが許容できる場合は、圧縮前にファイルを 1 つの大きなファイルに結合する方法を実装する方が簡単かもしれません。

于 2008-11-05T19:06:55.337 に答える