- Dave McKay
@TheGurkha
- 2019年4月5日、午前8時EDT
tarファイルは圧縮されたアーカイブです。 UbuntuなどのLinuxディストリビューションを使用しているとき、またはmacOSでターミナルを使用しているときにも、頻繁に発生します。 tarファイル(tarballとも呼ばれます)のコンテンツを抽出(またはuntar)する方法は次のとおりです。
.tar.gzおよび.tar.bz2とはどういう意味ですか?
ファイル.tar.gz
または.tar.bz2
拡張子を持つものは圧縮アーカイブファイルです。 .tar
拡張子のみのファイルは圧縮されていませんが、非常にまれです。
.tar
の部分ファイル拡張子はテープアーカイブの略であり、これらのファイルタイプの両方が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
と呼ばれます。これらのファイルはダウンロードディレクトリにあります。
ウクレレの曲を抽出しましょう:
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.bz2
ファイルの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ファイルの内部を確認する
これまでのところ、信頼を飛躍させ、目に見えないファイルを抽出しました。飛躍する前に見たいと思うかもしれません。 -t
(リスト)オプションを使用して、抽出する前にtar
ファイルの内容を確認できます。通常、出力をless
コマンドでパイプ処理すると便利です。
tar -tf ukulele_songs.tar.gz | less
ファイルを一覧表示するために-z
オプションを使用する必要がないことに注意してください。 .tar.gz
ファイルからファイルを抽出する場合にのみ、-z
オプションを追加する必要があります。同様に、tar.bz2
ファイル内のファイルを一覧表示するために-j
オプションは必要ありません。
スクロール出力では、tarファイル内のすべてがUkulele Songsというディレクトリ内に保持されており、そのディレクトリ内にファイルやその他のディレクトリがあります。
UkuleleSongsディレクトリには次のディレクトリが含まれていることがわかります。ランダムな曲、ラモーン、可能性。
tarファイル内のディレクトリからすべてのファイルを抽出するには、次のコマンドを使用します。パスにはスペースがあるため、パスは引用符で囲まれていることに注意してください。
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
単一のファイルを抽出するには、ファイルのパスと名前を指定します。
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
ワイルドカードを使用して、選択したファイルを抽出できます。ここで、*
は任意の文字列を表し、?
は任意の単一文字を表します。ワイルドカードを使用するには、--wildcards
オプションを使用する必要があります。
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
ディレクトリを抽出せずにファイルを抽出する
tarファイルのディレクトリ構造をハードドライブに再作成したくない場合は、--strip-components
オプションを使用します。 --strip-components
オプションには数値パラメーターが必要です。数値は、無視するディレクトリのレベル数を表します。無視されたディレクトリからのファイルは引き続き抽出されますが、ディレクトリ構造はハードドライブに複製されません。
例のtarファイルで--strip-components=1
を指定すると、 tarファイル内のUkuleleSongsの最上位ディレクトリはハードドライブに作成されません。そのディレクトリに抽出されたはずのファイルとディレクトリは、ターゲットディレクトリに抽出されます。
tar -xvzf ukulele_songs.tar.gz --strip-components=1
2つしかありませんサンプルのtarファイル内にネストされているディレクトリのレベル。したがって、--strip-components=2
を使用すると、すべてのファイルがターゲットディレクトリに抽出され、他のディレクトリは作成されません。
tar -xvzf ukulele_songs.tar.gz --strip-components=2
Linuxのマニュアルページを見ると、tar
が「コマンドラインオプションが最も多いコマンド」というタイトルの候補として適していることがわかります。ありがたいことに、.tar.gz
ファイルとtar.bz2
ファイルから適切な粒度でファイルを抽出できるようにするには、ほんの一握りを覚えておく必要があります
Dave McKayは、紙テープが流行したときに最初にコンピューターを使用し、それ以来プログラミングを続けています。 。IT業界で30年以上勤務した後、現在はフルタイムのテクノロジージャーナリストです。彼のキャリアの間、彼はフリーランスプログラマー、国際ソフトウェア開発チームのマネージャー、ITサービスプロジェクトマネージャー、そして最近ではITサービスプロジェクトマネージャーとして働いてきました。 、データ保護責任者として。デイブはLinuxのエバンジェリストであり、オープンソースの提唱者です。フルバイオを読む “