Linuxで.tar.gzまたは.tar.bz2ファイルからファイルを抽出する方法

tarファイルは圧縮されたアーカイブです。UbuntuのようなLinuxディストリビューションを使用しているとき、またはmacOSでターミナルを使用しているときにも、頻繁に発生します。tarballとも呼ばれるtarファイルの内容を抽出(またはuntar)する方法は次のとおりです。

.tar.gzと.tar.bz2はどういう意味ですか?

.tar.gzまたは.tar.bz2拡張子を持つファイルは、圧縮アーカイブファイルです。.tar拡張子だけのファイルは圧縮されていませんが、非常にまれです。

.tarファイルの拡張子の部分の略トンAPE ARニラ、およびこれらのファイルタイプの両方がtarファイルと呼ばれる理由です。 tarファイルtarは、システム管理者がファイルをテープにアーカイブできるようにするコマンドが作成された1979年までさかのぼります。 40年経った今でも、このtarコマンドを使用してtarファイルをハードドライブに抽出しています。おそらくどこかでまだtarテープを使っている人がいます。

.gzまたは.bz2拡張子接尾辞はアーカイブを使用してのいずれか、圧縮されていることを示しているgzipbzip2の圧縮アルゴリズム。このtarコマンドは両方のタイプのファイルで問題なく機能するため、どちらの圧縮方法を使用したかは関係ありません。また、Bashシェルがあるすべての場所で使用できるはずです。適切なtar コマンドラインオプションを使用する必要があります。

Tarファイルからのファイルの抽出

楽譜のファイルを2つダウンロードしたとしましょう。1つのファイルはと呼ばれukulele_songs.tar.gz、もう1つのファイルはと呼ばれguitar_songs.tar.bz2ます。これらのファイルはダウンロードディレクトリにあります。

ウクレレの歌を抽出してみましょう:

tar -xvzf ukulele_songs.tar.gz 

ファイルが抽出されると、ターミナルウィンドウに一覧表示されます。

使用したコマンドラインオプションは次のとおりです。

  • -x:tarファイルからファイルを抽出して取得します。
  • -v:詳細、抽出中のファイルを一覧表示します。
  • -z:Gzip、gzipを使用してtarファイルを解凍します。
  • -f:ファイルtar。操作するtarファイルの名前。このオプションの後には、tarファイルの名前を続ける必要があります。

のディレクトリ内のファイルを一覧ls表示すると、UkuleleSongsというディレクトリが作成されていることがわかります。抽出されたファイルはそのディレクトリにあります。このディレクトリはどこから来たのですか?それはtarファイルに含まれていて、ファイルと一緒に抽出されました。

それでは、ギターの曲を抽出しましょう。これを行うには、以前とほぼ同じコマンドを使用しますが、重要な違いが1つあります。.bz2拡張接尾辞は、BZIP2コマンドを使用して圧縮されているがわかります。-z(gzip)オプションを使用する代わりに、-j(bzip2)オプションを使用します。

tar -xvjf Guitar_songs.tar.bz2

繰り返しますが、ファイルは抽出されるときに端末に一覧表示されます。明確にするtarために、.tar.bz2ファイルに使用したコマンドラインオプションは次のとおりです。

  • -x:tarファイルからファイルを抽出して取得します。
  • -v:詳細、抽出中のファイルを一覧表示します。
  • -j:Bzip2、bzip2を使用してtarファイルを解凍します。
  • -f:ファイル、tarで使用するtarファイルの名前。

ダウンロードディレクトリにファイルを一覧表示すると、GuitarSongsという別のディレクトリが作成されていることがわかります。

ファイルを抽出する場所の選択

現在のディレクトリ以外の場所にファイルを抽出する場合は、-C(指定されたディレクトリ)オプションを使用してターゲットディレクトリを指定できます。

tar -xvjf Guitar_songs.tar.gz -C〜 / Documents / Songs /

Documents / Songsディレクトリを見ると、GuitarSongsディレクトリが作成されていることがわかります。

ターゲットディレクトリはすでに存在している必要があり、存在しtarない場合は作成されないことに注意してください。ディレクトリを作成し、tarその中にファイルをすべて1つのコマンドで抽出する必要がある場合は、次のように実行できます。

mkdir -p〜 / Documents / Songs / Downloaded && tar -xvjf Guitar_songs.tar.gz -C〜 / Documents / Songs / Downloaded /

-p (両親)オプションが原因mkdirターゲットディレクトリが作成されることを保証、必要とされているすべての親ディレクトリを作成します。

抽出する前にtarファイルの内部を確認する

これまでのところ、私たちは信頼を飛躍させ、目に見えないファイルを抽出しました。飛躍する前に見たいと思うかもしれません。(リスト)オプションtarを使用して、ファイルを抽出する前にファイルの内容を確認でき-tます。通常、lessコマンドを介して出力をパイプ処理すると便利です。

tar -tf ukulele_songs.tar.gz | もっと少なく

この-zオプションを使用してファイルを一覧表示する必要がないことに注意してください。ファイルからファイルを抽出する-z場合にのみ、オプションを追加する必要があります。同様に、ファイル内のファイルを一覧表示するオプションは必要ありません。.tar.gz-jtar.bz2

出力をスクロールすると、tarファイル内のすべてがUkulele Songsというディレクトリ内に保持されており、そのディレクトリ内にファイルやその他のディレクトリがあることがわかります。

Ukulele Songsディレクトリには、Random Songs、Ramones、Possiblesというディレクトリが含まれていることがわかります。

tarファイル内のディレクトリからすべてのファイルを抽出するには、次のコマンドを使用します。パスにはスペースがあるため、パスは引用符で囲まれていることに注意してください。

tar -xvzfukulele_songs.tar.gz「ウクレレソングス/ラモーンズ/」

単一のファイルを抽出するには、ファイルのパスと名前を指定します。

tar -xvzfukulele_songs.tar.gz「ウクレレソングス/023-MyBabe.odt」

ワイルドカードを使用して、選択したファイルを抽出できます。ワイルドカードは、*任意の文字列を?表し、任意の単一文字を表します。ワイルドカードを使用するには、--wildcardsオプションを使用する必要があります。

tar -xvz --wildcards -fukulele_songs.tar.gz「ウクレレソングス/可能性/ B *」

ディレクトリを抽出せずにファイルを抽出する

tarファイルのディレクトリ構造をハードドライブに再作成したくない場合は、この--strip-componentsオプションを使用してください。この--strip-componentsオプションには数値パラメータが必要です。数値は、無視するディレクトリのレベル数を表します。無視されたディレクトリからのファイルは引き続き抽出されますが、ディレクトリ構造はハードドライブに複製されません。

--strip-components=1tarファイルの例で指定した場合、tarファイル内のUkuleleSongsの最上位ディレクトリはハードドライブに作成されません。そのディレクトリに抽出されたはずのファイルとディレクトリは、ターゲットディレクトリに抽出されます。

tar -xvzf ukulele_songs.tar.gz --strip-components = 1

サンプルのtarファイル内にネストされているディレクトリのレベルは2つだけです。したがって、を使用すると--strip-components=2、すべてのファイルがターゲットディレクトリに抽出され、他のディレクトリは作成されません。

tar -xvzf ukulele_songs.tar.gz --strip-components = 2

Linuxのマニュアルページを見るとtar、「コマンドラインオプションが最も多いコマンド」というタイトルの候補として適していることがわかります。ありがたいことに、私たちはからファイルを抽出できるように.tar.gzし、tar.bz2きめ細かい制御の良好な程度を持つファイル、我々は、これらのオプションの一握りを覚えておく必要があります。