プロが教える店舗&オフィスのセキュリティ対策術

「tar xvf」「tar zxvf」の違いが分かりません。

・「hoge.tar」を展開するときは、「tar xvf」
・「hoge.tar.gz」を展開するときは、「tar zxvf」
ということなのでしょうか?

「tar xvf」で、「hoge.tar.gz」は展開できないのでしょうか?

A 回答 (5件)

No.5の方が回答されているとおり、最近のGNU tar(tar-1.15以降)では


デフォルトで圧縮形式の自動判別がなされるようになっています。

従って、以下の2つの結果は同じになります。(どちらも展開できます)

tar xvf hoge.tar.gz
tar zxvf hoge.tar.gz

ちなみに、圧縮形式の自動判別は「--no-auto-compress」で無効化できます。

> ・「hoge.tar」を展開するときは、「tar xvf」
> ・「hoge.tar.gz」を展開するときは、「tar zxvf」
> ということなのでしょうか?

その認識で正しいです。

あと、GNU tar以外のtarでは'z'オプションさえも使えないのが普通です。
そのような場合は以下のように記述します。

zcat hoge.tar.gz | tar xvf -

シェルスクリプトを作成する際に、移植する可能性があって標準的な記述が
求められる場合は、これが最も望ましい記述方法と言えます。
    • good
    • 1
この回答へのお礼

回答ありがとうございました。

>No.5の方が回答されているとおり、最近のGNU tar(tar-1.15以降)では
>デフォルトで圧縮形式の自動判別がなされるようになっています。
実は、よく分からないまま「tar xvf hoge.tar.gz」を利用していたら、解凍出来ていた(ような気がした)ので、疑問に思い質問しました

>従って、以下の2つの結果は同じになります。(どちらも展開できます)
良く分かりましたー

お礼日時:2012/06/04 16:27

最近のGNU tarでは 拡張子 による圧縮方法の自動判別がデフォルトなので、


 tar xf hoge.tar.gz

 tar xzf hoge.tar.gz
は同じ意味になると思います。(verbose出力のvはつけてもつけなくても良い)

ちなみに生成時にも自動判別は使えて、オプションaを指定します。
 tar caf hoge.tar.bz2 hoge

 tar cjf hoge.tar.bz2 hoge
と同じです。圧縮方法ごとに z Z j J の文字を覚えてなくて良いので便利ではあります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>最近のGNU tarでは 拡張子 による圧縮方法の自動判別がデフォルトなので
初めて知りましたー

お礼日時:2012/06/04 16:28

以下は半分雑学ですが。



・「tar xvf」について
これは他の回答者さんが言われる通り、アーカイブ・ファイルを展開するだけです。tarは元は磁気テープ用です。

磁気テープに保存する場合、ファイルに名前がつきません。早送りで次のファイルに進み、巻き戻しで前のファイルに戻るだけです。複数のファイルを1つにまとめて、名前も一緒に記録すれば、バックアップの手間が格段に減ります。

本来、tarが圧縮する必要はありません。通常はテープドライブ自身が圧縮機能を持っており、ソフトで圧縮するより速いからです。そのためtarは、指示しなければ圧縮しません。


・「tar zxvf」について
ところが、やっぱりソフトで圧縮したい場合があります。なぜならドライブの圧縮方式がメーカーごとに違ったためです。同じ規格でもドライブが違うとテープが読めないことがあります。

こうして、tarに圧縮機能がつきました。やはり展開するときも、圧縮してあることを指示する必要があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>tarは元は磁気テープ用です。

>磁気テープに保存する場合、ファイルに名前がつきません。早送りで次のファイルに進み、巻き戻しで前のファイルに戻るだけです。複数のファイルを1つにまとめて、名前も一緒に記録すれば、バックアップの手間が格段に減ります。

>本来、tarが圧縮する必要はありません。通常はテープドライブ自身が圧縮機能を持っており、ソフトで圧縮するより速いからです。そのためtarは、指示しなければ圧縮しません。

実は、「tarって何?」てずっと疑問に思っていたので、この情報は大変参考になりましたー

お礼日時:2012/06/04 16:31

tarはもともと磁気テープ向けのアーカイバです。

(Tape ARchiver)
無圧縮にまとめることしかしません。

そのテープの代りに通常のファイルを使うのが .tarファイルです。
無圧縮なのでファイルサイズが大きくなりがちなので、compress gzip bzip2などと言ったコマンドを使って圧縮することが多いです。

そこで、便利に使おうと、圧縮/展開に対応した、機能拡張版のtarコマンドが作られました。
その一つが、Linux標準とも言えるGNU tarです。

tar形式と、各圧縮形式はまったく別のものですから、現在の対象が素のtarなのか圧縮なのかを指定する必要があります。
そのためにz等のオプションが用意されています。

なお、ファイル名は飾りですので、それで判定するのは危険です。
そもそも、UNIX系では標準入出力をパイプで繋いで、ということをよくやるので、ファイル名が存在しないこともあります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

>tarはもともと磁気テープ向けのアーカイバです。(Tape ARchiver)
>無圧縮にまとめることしかしません。

>そのテープの代りに通常のファイルを使うのが .tarファイルです。
>無圧縮なのでファイルサイズが大きくなりがちなので、compress gzip bzip2などと言ったコマンドを使って圧縮することが多いです。

>そこで、便利に使おうと、圧縮/展開に対応した、機能拡張版のtarコマンドが作られました。
>その一つが、Linux標準とも言えるGNU tarです。

>tar形式と、各圧縮形式はまったく別のものですから、現在の対象が素のtarなのか圧縮なのかを指定する必要があります。
>そのためにz等のオプションが用意されています。

>なお、ファイル名は飾りですので、それで判定するのは危険です。
>そもそも、UNIX系では標準入出力をパイプで繋いで、ということをよくやるので、ファイル名が存在しないこともあります。

tarコマンドが生まれた背景など、説明が大変詳しくて、分かりやすかったです

お礼日時:2012/06/04 16:35

>「tar xvf」で、「hoge.tar.gz」は展開できないのでしょうか?



できません。基本的にtarコマンドは、「複数のファイルをまとめて書庫(.tarファイル)にいれる」「tarファイルに入れたファイルを書庫から出す」の処理を行うコマンドです。

xvfの意味は
x:(eXtractの略)tarファイルからファイルを抽出する
v:(verboseの略)冗長に
f:(fileの略) コマンドの後に書いたファイル名を対象として

という略になります。
これにgをつけると
g:(gzipの略) gzipファイル(.gzファイル)から
という意味になります。

そのため、
>「hoge.tar」を展開するときは、「tar xvf」
>「hoge.tar.gz」を展開するときは、「tar zxvf」
ということになります。

以上、ご参考まで。
    • good
    • 0
この回答へのお礼

回答ありがとうございました

お礼日時:2012/06/04 16:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!