パート1:パフォーマンス
以下に、2つの別々のワークフローとそれらが行うことの比較を示します。
blah.tar.gz
たとえば、1 GBのgzipで圧縮されたデータのディスク上にファイルがあり、非圧縮時には2 GBを占有します(圧縮率50%)。
アーカイブと圧縮を別々に行う場合、これを作成する方法は次のとおりです。
tar cf blah.tar files ...
これにより、圧縮されていない形式のblah.tar
単なる集約になりfiles ...
ます。
その後、あなたはやります
gzip blah.tar
これによりblah.tar
、ディスクのコンテンツが読み取られ、gzip圧縮アルゴリズムで圧縮され、コンテンツがに書き込まれblah.tar.gz
、ファイルのリンクが解除(削除)されますblah.tar
。
さあ、解凍しましょう!
方法1
あなたはblah.tar.gz
、何らかの形で持っています。
あなたが実行することに決めました:
gunzip blah.tar.gz
この意志
- の1 GB圧縮データコンテンツを読み取ります
blah.tar.gz
。
- 圧縮データを
gzip
メモリ内のデコンプレッサーを介して処理します。
- メモリバッファが「ブロック」に相当するデータでいっぱいになると、非圧縮データを
blah.tar
ディスク上のファイルに書き込み、すべての圧縮データが読み取られるまで繰り返します。
- ファイルのリンクを解除(削除)します
blah.tar.gz
。
これで、blah.tar
ディスクは圧縮されていませんが、データ構造のオーバーヘッドが非常に低く、1つ以上のファイルが含まれています。ファイルサイズは、おそらくすべてのファイルデータの合計よりも数バイト大きいでしょう。
あなたが実行します:
tar xvf blah.tar
この意志
- ファイルのアクセス許可、ファイル名、ディレクトリなどに関する情報を含む、2 GBの非圧縮データコンテンツ
blah.tar
とtar
ファイル形式のデータ構造を読み取ります。
- 2 GBのデータとメタデータをディスクに書き込みます。これには、データ構造/メタデータ情報を適切なディスク上の新しいファイルとディレクトリの作成に変換するか、既存のファイルとディレクトリを新しいデータコンテンツで書き換えます。
このプロセスでディスクから読み取る合計データは、1 GB(gunzipの場合)+ 2 GB(tarの場合)= 3 GBでした。
このプロセスでディスクに書き込みした合計データは、2 GB(gunzip用)+ 2 GB(tar用)+メタデータ用の数バイト=約4 GBでした。
方法2
あなたはblah.tar.gz
、何らかの形で持っています。
あなたが実行することに決めました:
tar xvzf blah.tar.gz
この意志
- の1 GB圧縮データコンテンツを
blah.tar.gz
一度に1ブロックずつメモリに読み込みます。
- 圧縮データを
gzip
メモリ内のデコンプレッサーを介して処理します。
- メモリバッファがいっぱいになると、メモリ内のデータがファイル形式パーサーにパイプされ、
tar
メタデータなどに関する情報と非圧縮ファイルデータが読み取られます。
- メモリバッファが
tar
ファイルパーサーでいっぱいになると、ファイルとディレクトリを作成し、それらを非圧縮コンテンツで埋めることにより、非圧縮データをディスクに書き込みます。
このプロセスでディスクから読み取る合計データは、1 GBの圧縮データ期間でした。
このプロセスでディスクに書き込みした合計データは、2 GBの非圧縮データ+メタデータの数バイト=約2 GBです。
気が付いた場合、ウェイ2のディスクI / Oの量は、圧縮率の違いを調整して、または7-Zipプログラムなどによって実行されるディスクI / O と同じです。Zip
圧縮率が懸念される場合は、Xz
コンプレッサーを使用してカプセル化しtar
、7-Zipで利用可能な最も高度なアルゴリズムと同じくらい効率的なLZMA2'ed TARアーカイブがあります:-)
パート2:機能
tar
Unixパーミッションをファイルメタデータ内に格納し、あらゆる種類の異なるパーミッション、シンボリックリンクなどを使用してディレクトリを正常にパックすることで非常によく知られており、テストされています。単一のファイルまたはストリームに変換しますが、必ずしも圧縮する必要はありません(ただし、圧縮は便利で頻繁に使用されます)。
パート3:互換性
多くのツールは、「最も一般的な分母」ファイル形式であるため、.tar.gzまたは.tar.bz2としてソース形式またはバイナリ形式で配布されます。ほとんどのWindowsユーザーが.zipまたは.rar解凍プログラムにアクセスできるように、ほとんどのLinuxインストール、たとえ最も基本的なものであっても、どれだけ古くても、または小さくしても、少なくともtarとgunzipにアクセスできます。Androidファームウェアでもこれらのツールにアクセスできます。
最新のディストリビューションを実行しているオーディエンスを対象とした新しいプロジェクトは、.tar.xz(gzipまたはbzip2よりも圧縮率の高いXz(LZMA)圧縮形式を使用)、または複数のファイルを単一のファイルにカプセル化するためのレイアウトを圧縮および指定するという点で、ZIPまたはRARファイル形式。
OpusやWebMのビデオのようなまったく新しい形式のオンラインダウンロードストアから音楽が販売されないのと同じ理由で、.7zが頻繁に使用されることはありません。古代または非常に基本的なシステムを実行している人々との互換性。
tar xvzf
よりも硬い7z -x
...