7z は、さまざまなデータ圧縮、暗号化、および前処理アルゴリズムをサポートする圧縮アーカイブ ファイル フォーマットです。7z フォーマットは、当初7-Zipアーカイバによって実装された形で登場しました。7-Zip プログラムは、GNU Lesser General Public Licenseの条件に基づいて一般に公開されています。LZMA SDK 4.62 は、2008 年 12 月にパブリック ドメインになりました。7-Zip およびLZMA SDKの最新の安定版はバージョン 26.00 です。[ 2 ]
7zファイル形式の仕様は、2015年から7-Zipのソースコードに同梱されています。仕様は、ソースコード配布の「doc」サブディレクトリにプレーンテキスト形式で記載されています。[ 3 ] [ 4 ]
7zフォーマットは、主に以下の機能を提供します。
このフォーマットのオープンなアーキテクチャにより、将来的に新たな圧縮方式を標準規格に追加することが可能となる。
現在、以下の圧縮方式が定義されています。
AdvanceCOMPと呼ばれる一連の再圧縮ツールには、7-Zipの実装に含まれるDEFLATEエンコーダーのコピーが含まれています。これらのユーティリティは、既存のgzip、ZIP、PNG、またはMNGファイルのサイズをさらに圧縮するためによく使用されます。
LZMA SDK にはBCJおよびBCJ2プリプロセッサが含まれているため、後段でより高い圧縮率を実現できます。x86 、 ARM 、 PowerPC ( PPC)、IA-64 Itanium、およびARM Thumbプロセッサの場合、ジャンプ ターゲットは圧縮前に相対位置を絶対値に変換することで「正規化」されます[ 4 ]。x86 の場合、これは、ニア ジャンプ、呼び出し、および条件付きジャンプ (ただし、ショート ジャンプおよび条件付きジャンプは除く) がマシン語の「1655 バイト後方にジャンプ」スタイルの表記から正規化された「アドレス 5554 にジャンプ」スタイルの表記に変換されることを意味します。したがって、共通のサブルーチンである可能性のある 5554 へのすべてのジャンプは同じようにエンコードされ、圧縮率が高くなります。
7z フォーマットは、 256 ビットの鍵を使用したAESアルゴリズムによる暗号化をサポートしています。鍵は、SHA-256ハッシュ関数に基づくアルゴリズムを使用して、ユーザーが指定したパスフレーズから生成されます。SHA-256 は 2 19 (524288) 回実行されるため[ 5 ] 、圧縮または展開が開始される前に低速な PC ではかなりの遅延が発生します。この手法はキー ストレッチングと呼ばれ、パスフレーズのブルートフォース検索を困難にするために使用されます。現在の GPU ベースおよびカスタム ハードウェア攻撃は、この特定のキー ストレッチング方法の有効性を制限しているため[ 6 ]、強力なパスワードを選択することが依然として重要です。7z フォーマットでは、7z アーカイブのファイル名を暗号化するオプションが提供されています。
7z 形式はファイルシステムのパーミッション( UNIX の所有者/グループのパーミッションやNTFS ACLなど)を保存しないため、バックアップ/アーカイブ目的には不適切です。この回避策として、UNIX ライクなシステムでは、7z で圧縮する前にデータをtar ビットストリームに変換します。しかし、GNU tar (多くの UNIX 環境で一般的) は、7z を使用せずに、LZMA2 アルゴリズム (" xz ") を使用してネイティブに圧縮することもできます。その場合、結果として得られるファイル拡張子は ".tar.xz" または ".txz" であり、".tar.7z" ではありません。この圧縮方法は、Arch、Debian (deb)、Fedora (rpm)、Slackware など、多くのディストリビューションでパッケージングに採用されています。(古い "lzma" 形式は効率が劣ります。) [ 7 ]一方、tar はファイルシステムのエンコーディングを保存しないため、tar で圧縮されたファイル名は、別のコンピュータで解凍すると読み取れなくなる可能性があります。
7z形式では、一部の「破損したファイル」の抽出ができません。つまり、(例えば)一連の7zファイルの最初のセグメントしか持っていない場合、7zはアーカイブ内のファイルの先頭部分を取得できず、すべてのセグメントがダウンロードされるまで待機する必要があります。また、7z形式にはリカバリレコードがないため、parchivesなどの外部ソリューションと併用するか、堅牢なエラー訂正機能を備えたファイルシステムで使用しない限り、データ劣化のリスクがあります。比較として、zipファイルにはリカバリ機能がありませんが、 rar形式にはリカバリ機能があります。
LZMA1 と比較して、LZMA2 は LZMA_SYNC_FLUSH のサポート、非圧縮チャンク (非圧縮データを圧縮しようとすると拡張が小さくなる)、エンコードの途中で lc/lp/pb を変更できる機能、およびその他の内部的な改善を追加しています。