大容量データの圧縮・解凍が可能な PKZIP ファイル

この記事では、ZIP ファイルの容量について紹介します。ZIP ファイルの容量は、PKSFX (自己解凍形式ファイル) にも関連します。ZIP ファイルの仕様に準拠するすべての ZIP 互換のアプリケーションにも関連します。

ZIP ファイルフォーマット仕様は APPNOTE.TXT として PKWARE 社によって公開されています。この APPNOTE は ZIP アーカイブを定める内部データ構造やレイアウトについて記述しています。現在の APPNOTE 仕様については、「Application Note Archives」を参照してください。

背景

1989 年に PKWARE 社は初期の ZIP ファイルフォーマットを開発し、その当時のコンピュータ ユーザーのニーズを満たしました。コンピュータ技術の発展とともに、記憶域容量は劇的に増加しました。この増加により、1989 年には信じられなかったようなファイルの数やサイズを実現しました。このようなシステムの変化に適応する ZIP ファイルフォーマット使用の拡大を目指し、PKWARE 社は ZIP ファイルフォーマットの拡張を続けてきました。そして、1 つのアーカイブにつき 65,535 個以上のファイル、4 GB 以上のサイズをサポートすることを目指してきました。PKWARE 社が開発した拡張機能は、現行のアーカイブのすべての特徴を十分にサポートします。これらの拡張機能をサポートする PKZIP / SecureZIP のバージョンは今後も現行のすべてのアーカイブを読み込みます。

初期バージョンの PKZIP for DOS v2.04g は APPNOTE バージョン 2.0 に対応しており、ZIP アーカイブ 1 つにつき 16,383 個のファイルが最大とされていました。APPNOTE バージョン 4.5 またはそれ以前のバージョンの仕様をサポートしている PKZIP では ZIP アーカイブ 1 つにつき 65,535 個以上のファイルを保管できませんでした。

PKZIP バージョン 4.5 以前の上限としては、4 GB (4,294,967,295 bytes) 以上の ZIP アーカイブをサポートしていませんでした。また、初期バージョンの PKZIP for DOS は、2 GB (2,147,483,647 bytes) 以上の ZIP アーカイブを処理できません。

現在の PKZIP ファイル容量

ZIPファイルフォーマット バージョン 4.5 は、4 億個以上のファイルを含み、最大 9 エクサバイトを超えるファイルを圧縮します。しかし、現在使用されているほとんどのコンピュータ システムの記憶域容量やメモリの上限は ZIP ファイルの上限を大幅に下回ります。そのため、ZIP ファイルの上限は、ZIP フォーマット上で定めた Storage パラメーターに基づいた理論的なものであり、事実上無制限です。

現在使用されている典型的なコンピュータのメモリ上限は、おおよそ 262,144 個のファイルの圧縮です。大規模なファイルを圧縮するには、それだけの時間がかかります。また、拡張した PKZIP ファイル フォーマットがサポートしている上限に達することは現実的ではありません。そのため、PKZIP バージョン 4.5 またはそれ以降のバージョンでは、現在2,147,483,647 個のファイルの解凍・圧縮を上限としています。

注意: ファイル数またはアーカイブ サイズの上限は、使用している OS によって異なります。実際の数は、ZIP ファイル作成時のシステム上の使用可能なメモリや記憶域ソースによって異なります。

容量 最新バージョン
ZIP アーカイブの最大サイズ 9,223,372,036,854,775,807 bytes
アーカイブ 1 つ当たりの最大ファイル数 2,147,483,647 files
ZIP アーカイブを分割・スパンする際のセグメントの最大数
4,294,967,295 segments
ZIP アーカイブを分割・スパンする際の最大セグメントサイズ
4,294,967,295 bytes
アプリケーション統合の最大ストリームサイズ*
4,294,967,294 bytes
ファイルコメントの最大値 65,535 bytes
1ファイルまたは1アーカイブのパスワードの最大数
1
最大暗号受信者数** 3275
ファイル 1 つ当たりの最大署名数 200
セントラルディレクトリの最大署名数
1
PKSFX の最大サイズ (分割されていない場合) 2,147,483,647 bytes
PKSFX の分割されたセグメントの最大サイズ 2,147,483,647 bytes

*:この上限は、Windows、UNIX、Linux プラットフォーム上のストリームデータの使用に適応されます。この上限は、将来的に取り除かれることが予想されます。
**:暗号化証明書データ容量は 64K 以下です。保管可能な受信者数は、証明書のサイズによって異なります。それぞれの証明書情報を保管するには、おおよそ 20 bytes が必要になります。
***:署名の証明書データ容量は 64K 以下です。保管可能な署名数は、証明書のサイズによって異なります。それぞれの証明書情報を保管するには、おおよそ 300 bytes が必要です。

PKSFX® self-extracting file (自己解凍形式ファイル) サイズは、OS によってサポートされている実行可能プログラムファイルのサイズの上限に左右されます。現在、ほとんどの OS は このサイズが 2 GB となっています。PKZIP はこの上限よりも大きい PKSFX ファイルを作成するように設定することができます。しかし、ほとんどの OS で実行することができません。2 GB より大きい容量を保持する PKSFX ファイルを作成し実行するには、PKSFX を 2 GB 以下のセグメントに分割する必要があります。分割したアーカイブを作成する際のセグメントサイズは対象プラットフォームの抽出コンポーネントより小さく設定してはいけません。つまり、抽出エンジンを分割することは不可能であり、抽出エンジンはセグメント内に含まれます。

古いバージョンの PKZIP や他のベンダーの ZIP プログラムでは、膨大な容量を持つ新しいアーカイブ上の全てのファイルを読み込めません。大規模アーカイブを送信する場合は、受信者が互換性のある バージョンの PKZIP を持っていることが送信したファイルの内容を受信者が抽出するために必要になります。アーカイブがいつも読み込まれるためには、PKZIP / SecureZIP を使用することを推奨します。

PKWARE SecureZIP / PKZIP 製品の詳細は、こちらのページからご覧ください。

タイトルとURLをコピーしました