回答:
.gz
、.xz
、.bz2
、.7z
、.lz
、.z
接尾辞は、ファイルが言った圧縮アルゴリズムで圧縮されていることを明確にするために使用されています。.tar
ファイルの使用はファイルに限定されず、initrd.gz
(圧縮された初期ramdisk)またはmanual.txt.gz
(圧縮されたテキストドキュメント)などのファイルも表示されます。また、file.tgz
これはgzipで圧縮されたtarballを示していることもわかります(などfile.tar.gz
)。
ファイル拡張子は規則であり、必ずしもファイルの内容を説明するものではありません。処理しているファイルの種類を確認するには、file
コマンドを使用します。例:
$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)
私の経験では、gzipで圧縮されたファイル(.gz
)は最も一般的なものです。圧縮率と圧縮解除は高速ですが、圧縮率を向上させるアルゴリズムは他にもあります。
@Lekensteynの答えに加えて、この動作はDo one thing and it it well哲学に基づいていることを追加したいと思います - tar
プログラムは複数のファイルを単一のストリーム(.tar
拡張子付き)に入れるgzip
方法を知っており、単一ファイル(.gz
拡張子の追加)*。これらのツールを組み合わせることにより、複数のファイルを単一の.tag.gz
ファイルに圧縮するコマンドを作成できます。
このアプローチは非常に柔軟です-いくつかの標準的なUnixコマンドを組み合わせて、あらゆる種類のことを行うことができます。たとえば、ファイルを圧縮するためのより良いプログラムtar
を作成する場合、.tar.mymegazip
ファイルを作成するために変更する必要はありません-代わりに、単にtar
コンプレッサーに出力をパイプします。
同様に、tar
SSHについては何も知りませんが、コマンドを組み合わせることにより、ファイルをアーカイブし、SSH経由でリモートマシンにアップロードし、そこでアーカイブ解除するスクリプトを作成できます。
これをzip
Unixに由来しないコマンドと比較してください。ディレクトリ全体の圧縮、ファイルの暗号化、アーカイブの小さなzipファイルへの分割などのツールが組み込まれています。
(脚注)-はい、スイッチおよびスイッチtar
を使用-z
してファイル自体をgzipまたはbzipでき-j
ます。これらは便宜上追加されたもので、GNU tarは実際に生成されるgzip
かbzip2
、新しいプロセスとして作成されます。
tar c dir/ | gzip > dir.tar.gz
とtar czf dir.tar.gz dir/
コマンドは同じことをします。例えばtar
SSHとと組み合わされるtar
:(再度)tar cz Documents/ | ssh user@host 'tar xz
:(rsyncの当量であろうrsync -a Documents user@host:
)