.tar.gzファイルを解凍/抽出するには、どのコマンドが必要ですか?


830

約800 mbの画像ファイルを含む巨大な.tar.gzファイルをクライアントから受信しました(非圧縮時)。当社のホスティング会社のftpは非常に遅いため、すべてのファイルをローカルで抽出してftpで送信することは実用的ではありません。.tar.gzファイルをホスティングサイトにftpできましたが、ディレクトリにsshしてunzipを使用しようとすると、次のエラーが表示されます。

[esthers@clients locations]$ unzip community_images.tar.gz
Archive:  community_images.tar.gz
  End-of-central-directory signature not found.  Either this file is not a zipfile, or it constitutes one disk of a multi-part archive.  In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note:  community_images.tar.gz may be a plain executable, not an archive
unzip:  cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.

.tar.gzファイル内のすべてのファイルを抽出するには、どのコマンドを使用する必要がありますか?

回答:


1390

詳細を入力man tarしますが、このコマンドはトリックを実行する必要があります。

tar -xvzf community_images.tar.gz

もう少し説明するために、tarはすべてのファイルを1つのパッケージに収集しましたcommunity_images.tar。gzipプログラムは圧縮を適用したため、gz拡張機能が使用されました。したがって、コマンドはいくつかのことを行います。

  • f:このコマンドの最後のフラグでなければならない、とタールF ileの直後でなければなりません。tarに圧縮ファイルの名前とパスを伝えます。
  • z:g z ip を使用してアーカイブを解凍するようにtarに指示します
  • x:tarは、ファイルや電子収集することができ、xはそれらを道を。x後者を行います。
  • v:tarをたくさん話させます。Vの erbose出力は、すべてのファイルが抽出されているかを示して。

5
@志貴あなたの提案された編集を見ました。適切な変更だとは思わない。このツールを説明した方法が好きだ。私はないあなたの考えるtar -xf提案が素晴らしい追加答えになるだろう。
djeikyb

3
これは、何百万もの同様のフレーズの質問のうち、より良い説明の1つです
-JohnMerlino

1
@KasunSiyambalapitiyaデフォルトでは、現在のフォルダーになります。も参照してくださいman tar-Cオプションを探してください。それとも他の回答😉チェックアウト
djeikyb

6
tarに関するxckdの記事思い出します。私は毎回戻ってくる必要があります。
ムガレー

19
このための私のニーモニックは次のとおりです。XのzのE Vは *** INGのFイレスを。
アガルガラ

172

ファイルを特定の宛先に抽出したい場合は、追加でき ます。最初にディレクトリを作成してください。この場合、〜/ Pictures / Community-C /destination/path/

例:

mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/

あなたが言って考慮すれば、あなたは簡単にそれを暗記することができタールのEにXのF ILE

ターミナルで行われたプロセスのgif

注意:あなたがmanページ内で検索することができます覚えておいてください?を探すために+用語、そしてnそしてNあなたが探している用語の次または前のインスタンスに移動するには。


5
" c hange directory"のCを忘れないでください!また、ハイフンと非ハイフンのオプションを混在させない方がよいと感じています(特にを使用する場合は混乱します)。ps
djeikyb 14年

2
なぜ他のすべてのコマンドのように-oではないのですか?
ヤンM.

6
私は「EのXの道にFのILEタール」あなたのヒントを愛する
ナムG VU

2
アニメーションGIFの場合は1+
Nick Steele

を使用することもできます--directory="/home/emmys/Pictures/Community/"(これは-C)よりも覚えやすいと思います)。
パトリック・ダーク

107

ある時点tarで、自動解凍にアップグレードされました。あなたが今必要なのは:

tar xf community_images.tar.gz

同じ説明が適用されます。

  • f:このコマンドの最後のフラグでなければならない、とタールF ileの直後でなければなりません。tarに圧縮ファイルの名前とパスを伝えます。
  • x:e xファイルを牽引します。

コマンドフラグにハイフンがないことに注意してください。これは、tarのほとんどのバージョンがgnuとbsdの両方のスタイルオプションを許可しているためです(単純に、gnuにはハイフンが必要ですが、bsdではできません)。


1
これに関するドキュメントはありますか?これへの参照を探し回っていますが、-zフラグを使用することはなく、すべてがgzip圧縮されるため、tarballをまったく圧縮していないのではないかと心配しています(笑)。ありがとう。
ニューロスナップ


3
おそらく、元の回答を編集する方がよかったでしょう。
セス

3
@Sethは、特にそれを引き起こした破壊的な編集の文脈において、別個の答えになるほど十分に明確に感じ/感じました。ただし、作業後に考え直しますが、当初考えていたよりも簡単なマージ方法かもしれません。
djeikyb

2
@EnricoMariaDeAngelis少なくとも2004年以降のbsd tarおよび少なくとも2010年以降のgnu tarは、解凍プログラムの自動選択をサポートしています。tarの「最新」(今世紀?90年代+?)バージョンでは、手動で解凍プログラムを選択する必要はありません。
djeikyb

11

すべてのフラグを思い出すのはtar面倒です。必須のXKCD:

ここに画像の説明を入力してください

したがって、それを行うためにPythonで独自の小さなスクリプトを作成しました。クイック、ダーティ、cp-like of usage:

#!/usr/bin/env python3
import tarfile,sys,os
tf = tarfile.open(name=sys.argv[1],mode='r:gz')
where = '.'
if len(sys.argv) == 3:
    where = sys.argv[2]
tf.extractall(path=where)
tf.close()

次のように使用します。

myuntar.py archive.tar

zipアーカイブを解凍するための同様のスクリプトも参照してください。


2
:) -cafファイル名に基づいて作成し、-xf抽出するために覚えておく必要のあるtarフラグは2つだけです(AFAIKはすべてのタイプのtarで機能します)。
Videonauth

@Videonauth私は知っています、それほど複雑ではありませんが、何らかの理由でこれらのオプションを覚えていません。たぶん、私はアーカイブを十分な頻度で扱っていないからでしょう。
セルギーKolodyazhnyy

これはgzip圧縮されたtarファイルのみを行いますか?APIドキュメントでは、透過的な圧縮を使用した読み取りモードに言及しています。それはもっと似ていtar xf <file>ますか?
djeikyb

7

素早い回答:

tar -xvf  <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>

[ ]:

  • -v 処理されたファイルを詳細にリストします。
  • -z gzipでアーカイブをフィルタリングします。
  • -f アーカイブファイルまたはデバイスARCHIVEを使用します。
  • -x アーカイブからファイルを抽出します。
  • -j bzip2。
  • tar -xfarchive.tar#からすべてのファイルを抽出しますarchive.tar

4

.tar.gzを使用してファイルを抽出できない場合

tar -xvzf fileName.tar.gz

を使用して抽出してみてください

tar xf fileName.tar.gz

4
gzip圧縮されたtarファイルの場合、最初のコマンドは常に機能します。動作しない場合、gzip圧縮されたtarファイルはありません。後者のコマンドは、tarファイルでどの圧縮アルゴリズムが使用されているかを気にかけない人にとっては素晴らしい推奨事項です。
-djeikyb

0

最初のステップでもこれを行うことができます。

gunzip community_images.tar.gz

次に、ファイルがあります:community_images.tar

次のステップは次のとおりです。

tar -xvf community_images.tar

そして、*。tarファイルが抽出されます。


0

tar xvf file.tar.gz

  • 抽出用のx
  • v冗長(リストファイル)
  • ファイル名のfはnext

tarのリモートの最新バージョンは、アーカイブがgzip圧縮されていることを自動検出し、「z」を追加する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.