Linux Ubuntuでの「tar」コマンドの次のバージョンについて:
tar -tzf /path/to/filename.tar.gz # Show the content
tar -xzf /path/to/filename.tar.gz # Extract the content
どちらのコマンドもこのz
オプションを使用し、期待どおりに機能していることを確認してください。
man tar
このz
オプションに関して、Passは次のことを示します。
-z, --gzip, --gunzip, --ungzip
Filter the archive through gzip(1).
質問
tar
コマンドがオプションgzip
でコマンドを使用するのはなぜですか'z'
?
その他の質問
セクションについてFilter the archive through gzip(1).
。
"filter"
上記の2つのコマンドにはなぜ必要ですか?またはの意味や文脈は何ですかfilter
?
答え1
保管と圧縮は異なるものです。
Windowsのほとんどのアーカイブプログラム(たとえば、、、、zip
など7z
)rar
は、両方ともアーカイブと圧縮を実行する1つのプログラムにまとめられているため、Windowsに慣れている人はそれらを分離できないものと考える傾向があります。
これらのプログラムは、主にUNIX以外のシステムとの互換性のためにUNIX / Linuxに存在しますが、別のプログラムが圧縮およびアーカイブ機能を実行するのがより一般的です。 MS-DOS / Windowsアーカイブとは異なり、UnixネイティブプログラムはUnixファイルのメタデータ(所有権や権限など)を理解して活用し、一部はACLを正しく処理することもできます。
tar
アーカイブプログラムです。 1 つ以上のファイルを .tar アーカイブに保存できます。アーカイブが圧縮されていません。もともとは、複数のファイルと関連するメタデータ(ファイル名、所有権、権限など)を含むストリームをテープに書き込むために使用されました。またはファイルとして。これは、すべてのバイトストリームをファイルにリダイレクトしたり、別のプログラムにパイプしたりできるためです。は唯一のアーカイブプログラムではなく、、、などをtar
含む他の多くのプログラムがあります。cpio
ar
afio
pax
gzip
圧縮プログラムです。単一のファイルを独自の圧縮バージョンに圧縮できます。あるいは、標準入力のデータを圧縮して標準出力に出力することができます(つまり、「フィルタ」として機能することができます)。繰り返しますが、gzip
これは唯一の圧縮/圧縮解除プログラムではなく、多くのプログラムの1つです。
tar
gzip
.tarアーカイブをディスクに書き込む前に圧縮するために使用できます。圧縮されたアーカイブを読む前に圧縮してください。
使用しているバージョンによっては、tar
他の圧縮プログラムを代わりに使用することもできますgzip
。たとえば、GNU tarには次の圧縮関連オプションがあります。
圧縮オプション
-a
、--auto-compress
圧縮パッケージのサフィックスを使用して圧縮プログラムを決定します。
-I
、--use-compress-program=COMMAND
COMMANDでデータをフィルタリングします。-d
解凍するには、このオプションを受け入れる必要があります。パラメータにはコマンドラインオプションを含めることができます。
-j
、--bzip2
bzip2(1)を介してアーカイブをフィルタリングします。
-J
、--xz
xz(1)でアーカイブをフィルタリングします。
--lzip
lzip(1) でアーカイブをフィルタリングします。
--lzma
lzma(1) でアーカイブをフィルタリングします。
--lzop
lzop(1) でアーカイブをフィルタリングします。
--no-auto-compress
コンプレッサーを決定するためにアーカイブサフィックスを使用しないでください。
-z
、、、、 gzip( 1 )でアーカイブをフィルタリングします--gzip
。--gunzip
--ungzip
-Z
、、圧縮(--compress
1--uncompress
)でアーカイブをフィルタリングします。
--zstd
zstd(1) でアーカイブをフィルタリングします。
そして、他のアーカイバーをコンプレッサーで使用できることは注目に値します。または、などのコマンドラインオプションを介して、-z
または-Z
コンプレッサの出力をファイルにリダイレクトする前に、アーカイバの出力をコンプレッサにパイプすることによって(または逆にコンテンツをリストまたは抽出するために圧縮をアーカイバに解凍)
必要に応じてアーカイブおよび圧縮プログラムを「混合」することで、アーカイブおよび/または圧縮技術の向上を活用できます。
GNU tarを含むほとんどのアーカイブプログラムはパイプを介してそれをサポートしますが、GNU tarはいくつかのよく知られたプログラムのためのいくつかの組み込みオプションと-I
独自の組み込みオプションを持たない他の圧縮プログラムを使用するための便利なオプションも提供します。 - おそらく、新しい圧縮アルゴリズムを実装したり、既存のアルゴリズムを新しく実装したりすることができます。たとえば、pigz
(、、などではない)などのpixz
プログラムはこれらの圧縮プログラムの並列バージョンであり、マルチコア/マルチスレッドCPUを利用してデータを圧縮または解凍するのに必要な時間を大幅に短縮できます。pbzip2
gzip
xz
bzip2
「フィルタ」は、出力がファイルにリダイレクトされるか、パイプライン出力の次のプログラムにパイプされる前に、1つのプログラムを処理(および何らかの方法で変更)するためにパイプラインで使用されるプログラムの一般的な用語です。
一部のプログラム(tar
with-z
など)は、ユーザーがシェルで実行することなく、フィルタリングパイプライン自体を設定できます(たとえば、tar xfz filename.tar.gz
基本的には同じgzip -d filename.tar.gz | tar xf -
、tar cfz filename.tar.gz ...
基本的には同じtar cf - ... | gzip > filename.tar.gz
)。
多くのUnixプログラムは、パイプでフィルタとして使用できるように書かれています。たとえば、gzip
既存のファイルを圧縮したり、入力ストリーム(stdin)を圧縮したり、出力をstdoutに送信したりできます。たとえば、単純なプログラムはcat
単にstdinをstdoutに直接渡すことも、オプションで行に番号を付けることで-n
行の終わりと制御などのコードを表示することができます(-v
、、-E
など-A
のオプションを使用-t
)。
ところで、パイプは非常に便利なので、人々がstdinから入力を受け取ってstdoutに書き込むことができるように、独自のスクリプト(awk、perl、または他の言語で)を書くのが非常に一般的です。つまり、人々は通常、独自のスクリプトをフィルタとして書きます。