タール抽出も自動的に解凍されます。

タール抽出も自動的に解凍されます。

私が走るとき

tar -cvzf archive.tgz file1 file2 ; rm file1 file2

一般的に圧縮されたターボールを生成しますが、それはどのように可能ですか?

tar -xvf archive.tgz

圧縮されていないファイルを返しますか?私はいつも-zフラグが必要だと思いました。

答え1

あなたのtar実装(おそらく最初の実装)は、圧縮のための引数1GNUに渡されたファイルを検出します。

tar現在最も一般的な実装は、ファイルの最初のバイト(マジックナンバーとも呼ばれる)をGNU tar見て、ファイルが圧縮されているかどうか、および使用される圧縮アルゴリズムを決定することです。busybox

tarもともとAT&Tコードに基づく商用Unixの実装は、最初はこのフラグをサポートしていませんでした-z。注目すべき例外の1つtarは、ファイル形式を検出する機能など、この拡張機能が追加されたSolaris 11です。

1他の記事ですでに述べたように、GNU tarはstdinを介して渡されたファイルが圧縮されたかどうかを検出しません。返信するそしてSensorSmithの口コミ

答え2

Starは自動圧縮検出と自動圧縮解除を導入します。 20年前。

今日、他のいくつかのtar実装(gtarなど)はこのアイデアをコピーしています。

注:starは、正しい解凍方法を検出するために圧縮されたストリームのマジックナンバーを理解します。また、stdin指定されたファイルから圧縮アーカイブを読み取るとgtarが失敗することに注意してください。

答え3

-zこのオプションは、2つのよく知られているtarの実装であるGNU tarとBSD tar(aka無料アーカイブ)。必要な圧縮アルゴリズムを検出することは、入力ファイルの最初の数バイトを調べるのと同じくらい簡単です。

これらの実装のいずれかを使用するかどうかは、主にLinuxベースのシステムまたはBSDシステム(OSXを含む)を使用するオペレーティングシステムによって異なります。

私のページにこれらの機能がいつ導入されるかについての詳細をまとめました。タールと移植性

関連情報