ファイル間圧縮をサポートする圧縮/アーカイブ形式は何ですか?
-
06-07-2019 - |
質問
PDFのアーカイブに関するこの質問は疑問に思いました-マスターテンプレート(レターヘッド)に加えられた本質的に小さな変更である多くのファイルを(アーカイブ目的で)圧縮したい場合、それは巨大な圧縮のようですファイル間圧縮を使用すると効果が得られます。
標準の圧縮/アーカイブ形式のいずれかがこれをサポートしていますか?私の知る限り、すべての一般的な形式は、各単一ファイルの圧縮に焦点を当てています。
解決
いくつかの形式はファイル間圧縮を行います。
最も古い例は.tar.gzです。 .tarには圧縮はありませんが、各ファイルの前にヘッダーを付けてすべてのファイルを連結し、.gzは1つのファイルのみを圧縮できます。両方とも順番に適用され、Unixの世界では伝統的な形式です。 .tar.bz2は同じですが、gzipではなくbzip2のみです。
最近の例は、オプションの" solid"の形式です。圧縮(たとえば、RARおよび7-Zip)。コマンドラインフラグまたはGUIオプションによって有効になっている場合、圧縮する前にすべてのファイルを内部で連結できます。
他のヒント
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)よりも大きい場合、これらのアルゴリズムが役立ちます。
これらは、GoogleがBIGTABLE実装の内部で内部的に使用して、あなたが探しているのとほぼ同じ理由で圧縮されたWebページを保存します。
LZW圧縮(ほとんどすべてが使用しているため)を使用すると、アーカイブ全体を一度に解凍する必要があるスキーマなど、必要に応じて繰り返し文字のテーブルを作成する必要があります。
これが許容範囲内であれば、圧縮する前にファイルを1つの大きなファイルに結合するメソッドを実装する方が簡単かもしれません。