現在Tarファイル形式を使用する利点は何ですか?
タールアーカイブフォーマットは、計算年数で、確かなメトセラですが、今日でもまだ多用されています。開始以来ずっと、tarフォーマットがとても便利になった理由?
本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.
質問
SuperUserの読者MarcusJは、tarフォーマットについて興味を持っています。そして、なぜ私たちがこれらの年の後もまだそれを使用しているのか:
tarは当時テープアーカイブ用に作られていたことを知っていますが、今日では、ファイルを集約し、同じ論理ファイル形式内で圧縮を実行するアーカイブファイル形式があります。.
質問:
- 同じデータ構造で集約と圧縮を行うファイル形式を使用した場合と比較した場合、gzipまたはbzip2でカプセル化されたtarを使用すると、集約/圧縮/解凍の段階でパフォーマンスが低下しますか?比較されているコンプレッサの実行時間が同一であると仮定する(例えば、gzipとDeflateは類似している)。.
- .7zや.zipなどの他のファイル形式にはないtarファイル形式の機能はありますか?
- tarはそのような古いファイル形式であり、新しいファイル形式が今日存在するため、GNU / Linux、Android、BSD、およびその他のUNIXでtarがgzip、bzip2、または新しいxzでカプセル化されているかどうか)オペレーティングシステム、ファイル転送、プログラムソースとバイナリのダウンロード、そして時にはパッケージマネージャフォーマットとしても?
それは完全に合理的な質問です。過去30年間でコンピューティングの世界ではそれほど多くの変化がありましたが、まだtar形式を使用しています。物語は何ですか?
答え
SuperUserの寄稿者Allquixoticは、tarフォーマットの寿命と機能性についていくつかの洞察を提供します。
パート1:パフォーマンス
これが2つの別々のワークフローとそれらが何をするかの比較です。.
ディスク上にファイルがあります
blah.tar.gz
これは、1 GBのgzip圧縮データで、圧縮されていないときは2 GBを占めます(つまり、圧縮率は50%)。.アーカイブと圧縮を別々に行う場合、これを作成する方法は次のようになります。
tar cf blah.tarファイル…
これは
blah.tar
これは、ファイル…
非圧縮形式で.それなら
gzip blah.tar
これはの内容を読むだろう
blah.tar
ディスクから、gzip圧縮アルゴリズムで圧縮し、内容をblah.tar.gz
, その後、ファイルのリンクを解除(削除)しますblah.tar
.それでは、解凍しましょう。!
方法1
あなたが持っている
blah.tar.gz
, あれやこれやで.あなたは実行することにしました:
gunzip blah.tar.gz
この意志
- の1GB圧縮データの内容を読む
blah.tar.gz
.- を通じて圧縮データを処理します。
gzip
メモリ内のデコンプレッサ.- メモリバッファが「1ブロック」分のデータでいっぱいになったら、非圧縮データをファイルに書き込みます。
blah.tar
ディスク上ですべての圧縮データが読み取られるまで繰り返します。.- ファイルのリンクを解除(削除)する
blah.tar.gz
.今、あなたは
blah.tar
非常に低いデータ構造のオーバーヘッドで、圧縮されていませんが、その中に1つ以上のファイルが含まれています。ファイルサイズはおそらく 数バイト すべてのファイルデータの合計よりも大きい.あなたが実行します:
tar xvf blah.tar
この意志
- の2GBの非圧縮データの内容を読む
blah.tar
そしてそのタール
ファイルパーミッション、ファイル名、ディレクトリなどに関する情報を含むファイルフォーマットのデータ構造.- 2GBのデータとメタデータをディスクに書き込みます。これには以下が含まれます。データ構造/メタデータ情報を、必要に応じてディスク上に新しいファイルとディレクトリを作成すること、または既存のファイルとディレクトリを新しいデータ内容で書き換えること。.
合計データ 読む このプロセスでディスクから1GB(gunzip用)+ 2GB(tar用)= 3GB.
合計データ 書きました このプロセスでディスクに2GB(gunzipの場合)+ 2GB(tarの場合)+メタデータ用に数バイト= 4GB.
方法2
あなたが持っている
blah.tar.gz
, あれやこれやで.あなたは実行することにしました:
tar xvzf blah.tar.gz
この意志
- の1GB圧縮データの内容を読む
blah.tar.gz
, 一度に1ブロックずつメモリに.- を通じて圧縮データを処理します。
gzip
メモリ内のデコンプレッサ.- メモリバッファがいっぱいになると、 パイプ メモリ内のそのデータ
タール
メタデータなどに関する情報と非圧縮ファイルデータを読み取るファイルフォーマットパーサ.- メモリバッファがいっぱいになると
タール
ファイルパーサーは、ファイルとディレクトリを作成し、それらを非圧縮コンテンツで埋めて、非圧縮データをディスクに書き込みます。.合計データ 読む このプロセスでディスクから1GBの圧縮データ、期間.
合計データ 書きました このプロセスでディスクに2GBの非圧縮データ+メタデータ用に数バイト=約2GB.
気付いたら、ディスクI / Oの量 方法2 です 同一の ディスクI / Oへのアクセス
ジップ
または7ジップ
圧縮率の違いを調整するプログラム.圧縮率が問題になる場合は、
Xz
カプセル化するコンプレッサタール
, そしてあなたはLZMA2'ed TARアーカイブを持っています。これは最も先進的なアルゴリズムと同じくらい効率的です。7ジップ
:-)パート2:機能
タール
UNIXのパーミッションをそのファイルのメタデータに格納しており、ディレクトリをあらゆる種類のパーミッション、シンボリックリンクなどでうまくパッキングすることで非常によく知られテストされています。単一のファイルまたはストリーム。ただし必ずしも圧縮する必要はありません(ただし、圧縮は便利であり、よく使用されます)。.パート3:互換性
多くのツールはソース形式またはバイナリ形式で.tar.gzまたは.tar.bz2として配布されています。これは、最も一般的な分母形式のファイル形式であるためです。最も基本的なものであっても、いくら古くても少なくても、少なくともtarとgunzipにアクセスできます。 Androidファームウェアでもこれらのツールにアクセスできます.
最新のディストリビューションを実行しているオーディエンスをターゲットにした新しいプロジェクトは、.tar.xz(Xz(LZMA)圧縮形式を使用します(gzipまたはbzip2よりも圧縮率が高い))、またはZipまたはRarファイル形式。複数のファイルを1つのファイルにカプセル化するためのレイアウトを圧縮および指定します。.
あなたは、音楽がOpusのような真新しいフォーマットやWebMのビデオでオンラインのダウンロードストアから販売されていないのと同じ理由で、.7zがより頻繁に使われるのを見ません。古代または非常に基本的なシステムを実行している人々との互換性.
説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.