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

公開: 2022-01-29
UnityデスクトップコンセプトのBashシェル
Fatmawati Achmad Zaenuri / Shutterstock.com

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

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

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

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

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

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

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

ダウンロードディレクトリにある2つのtarファイル

ウクレレの曲を抽出してみましょう。

 tar -xvzf ukulele_songs.tar.gz
広告

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

tarファイルからのすべてのファイルの抽出

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

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

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

ダウンロードディレクトリに作成されたウクレレソングスディレクトリ

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

 tar -xvjfguitar_songs.tar.bz2 

ダウンロードフォルダ内のギター曲のtarファイルの抽出

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

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

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

ダウンロードディレクトリに作成されたギターソングディレクトリ

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

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

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

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

Documents / Songsディレクトリに作成されたギターソングディレクトリ

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

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

-p (親)オプションを指定すると、 mkdirは必要な親ディレクトリを作成し、ターゲットディレクトリが確実に作成されるようにします。

それらを抽出する前にtarファイルの内部を見る

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

 tar -tf ukulele_songs.tar.gz | 以下

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

lessを介してパイプされたtarファイルの内容

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

パイプされたtarファイルの内容の2番目のビュー

広告

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

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

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

tarファイルから単一のフォルダを抽出する

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

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

tarファイルから単一ファイルを抽出する

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

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

ワイルドカードを使用してtarから曲を抽出する

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

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

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

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

--strip-components = 1を使用してtarファイルからファイルを抽出する

広告

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

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

--strip-components = 2を使用してtarファイルからファイルを抽出する

Linuxのマニュアルページを見ると、 tarが「コマンドラインオプションが最も多いコマンド」というタイトルの適切な候補である必要があることがわかります。 ありがたいことに、 .tar.gzファイルとtar.bz2ファイルから適切な粒度でファイルを抽出できるようにするには、これらのオプションをいくつか覚えておくだけで済みます。

関連:開発者と愛好家のための最高のLinuxラップトップ