この記事は、ZIPアーカイブにファイルを正しく最大限に圧縮する方法について説明しています。 この記事を書く理由は、非常に多くのアプリケーションがZIP形式でフォーマットをパックしているからです。 この記事では、ZIP圧縮方式、ZIP圧縮アプリケーション、および圧縮の改善方法について説明します。
ZIP圧縮方法
まず、ZIPはさまざまな圧縮方法(コピー、デフレート、デフレート64、BZip2、LZMA、PPMd)をサポートすることをお勧めしますが、ほとんどのアプリケーションがこのメソッドを使用する理由から、1つの圧縮メソッド-Deflateのみを検討します。 zip形式でパックします。 以下は、実際にはZIPアーカイブであるファイル形式の短いリストです-open-file.ru (検索でASCIIヘッダー記述子を入力-PK )。 すぐに予約してください。これはほんの小さなファイルのリストです。
圧縮方法の収縮
現在、Deflate圧縮方式に基づいたいくつかのライブラリがあります。
ライブラリのデフレート | 作業速度 | 圧縮比 | 用途 |
Zlib | 高い | 低い | |
7-zip | 平均 | 平均 | 7-zip 、 advzip |
Kzip | 低い | 高い | kzip |
ZIPアーカイバー
このセクションでは、無料で使用できるアプリケーションのみを検討します。
7-zipアルゴリズム
ここでは、7-zipアルゴリズムが実装されている2つのプログラム、7-zipとadvzipについて説明します。
7-zipを使用してzipアーカイブを作成するとき、次のオプションを使用します
-r -mm=Deflate -y -tzip -mpass=15 -mfb=258 -mx9
advzipの特徴は、既製のzipアーカイブで既に機能していることです。 アーカイブへのパスを指定するだけで、彼自身がアーカイブを圧縮しようとします。 既成のアーカイブがすでにあり、それを解凍して再度アーカイブする必要がない場合に便利です。
Kzipアルゴリズム
kzipアルゴリズムはkzipアプリケーションに実装され、アプリケーションの実行は非常に遅くなりますが、ほとんどの場合、最高の結果が得られます。 ZIPの圧縮率を改善/悪化させる設定(/ s、/ n、/ b)があります。
推奨事項
ここで、最適な圧縮率を得る方法についていくつかの推奨事項を示したいと思いました(推奨事項は個人的な経験に基づいています)。
- ファイルをアーカイブし、ZIPアーカイブがある場合は、これらのアーカイブを解凍することをお勧めします(便宜上、advzipを/ z0オプションとともに使用できます)。 これは、Deflateメソッドが連続アーカイブをサポートしていないためです。 Deflateメソッドが解凍されたアーカイブを圧縮しようとすると、この場合、解凍されたアーカイブは1つのファイル全体として表示され、その内容は連続アーカイブとして圧縮されます。
- 最大の圧縮効果を得るには、 zipmixアプリケーションを使用できます。 kzipを使用して同じコンテンツの2つのzipアーカイブを作成したが、設定が異なるため、異なるサイズのアーカイブを受け取ったとします。 ただし、これは、最初のアーカイブで圧縮したすべてのファイルが、2番目のアーカイブよりも小さいサイズで個別に圧縮されることを意味するものではありません。 これらの目的のために、zipmixが必要です。2つのアーカイブから3番目のアーカイブを作成し、サイズを小さくします。 彼は各ファイルを個別に比較し、サイズが小さいオプションを選択します。 zipmixはkzipアーカイブでのみ機能しません。
練習する
そして、私はそれがどのように機能するかを示すことにしました。 例えば、私はiPad用のゲーム-Angry Birds HDバージョン2.0.0を取りました。 ゲームの元のサイズは13,547,363バイトです。
用途 | 結果、バイト | 経過時間、秒 |
advzip | 12 891 768 | 195 |
7-zip | 12 891 143 | 720 |
kzip | 12 877 794 | 2770 |
7-zip + advzip | 12 858 419 | - |
kzip + advzip | 12 849 101 | - |
kzip + 7-zip + advzip | 12 842 760 | - |
ご覧のとおり、zipmixは圧縮率をわずかに改善できます。 個人的には、最大値を取得する必要がある場合、3つの結果(kzip + advzip + 7-zip)をすべて1つにまとめるだけです。 これは、kzipでパラメーターを反復処理するよりもはるかに優れています。