- Tarファイルは、UbuntuのようなLinuxディストリビューションで使用される圧縮アーカイブです。ターミナルでtarコマンドを使用して抽出できます。
- .tar.gzと.tar.bz2の拡張子は、tarファイルがgzipまたはbzip2圧縮アルゴリズムを使用して圧縮されていることを示しています。
- tarファイルからファイルを抽出するには、圧縮の種類に応じて、オプション-x、-v、および-z(.gz)または-j(bz2)を指定してtarコマンドを使用します。抽出されたファイルは、-Cオプションを使用して特定のディレクトリに転送できます。
Tarファイルは圧縮アーカイブです。UbuntuのようなLinuxディストリビューションを使用しているとき、またはmacOSでターミナルを使用しているときでも、頻繁に遭遇します。tarファイル、別名tarballの内容を抽出(または展開)する方法を説明します。
.tar.gzと.tar.bz2の意味
.tar.gz
または.tar.bz2
拡張子を持つファイルは、圧縮アーカイブファイルです。.tar
拡張子のみのファイルは圧縮されていませんが、そのようなファイルは非常にまれです。
ファイル拡張子の.tar
部分はtapearchiveの略で、この2つのファイルタイプがtarファイルと呼ばれる理由です。tarファイルは、1979年にtar
コマンドが作成され、システム管理者がファイルをテープにアーカイブできるようになったことに端を発します。40年後、私たちはまだtar
コマンドを使用してtarファイルをハードドライブに抽出しています。どこかで誰かがまだtar
とテープを使用しているでしょう。
.gz
または.bz2
拡張子のサフィックスは、gzip
またはbzip2
圧縮アルゴリズムを使用してアーカイブが圧縮されていることを示します。tar
コマンドはどちらの種類のファイルでも正常に機能するため、どの圧縮方法が使用されたかは関係ありません。Bashシェルがある場所ならどこでも使用できるはずです。適切なtar
コマンドラインオプションを使用するだけです。
この記事のすべては、Windows 10またはWindows 11にBashシェルをインストールできるLinux用のWindowsサブシステムでも機能することに注意してください。ただし、Windowsでtar.gzファイルを開く方法は他にもあります。
Tarファイルからファイルを抽出する
楽譜のファイルを2つダウンロードしたとします。1つはukulele_songs.tar.gz
というファイルで、もう1つはguitar_songs.tar.bz2
というファイルです。これらのファイルはダウンロードディレクトリにあります。
ウクレレの曲を抽出(抽出の代わりに「展開」と呼ばれることもあります)してみましょう。
tar -xvzf ukulele_songs.tar.gz
ファイルが抽出されると、ターミナルウィンドウに一覧表示されます。
使用したコマンドラインオプションは次のとおりです。
- -x:tarファイルからファイルを抽出します。
- -v:展開されたファイルのリストを表示します。
- -z:tarファイルを解凍するためにgzipを使用します。
- -f:tarが処理するtarファイルの名前です。このオプションの後ろには必ずtarファイルの名前を指定する必要があります。
ls
を使用してディレクトリ内のファイルをリストすると、ウクレレの曲という名前のディレクトリが作成されていることがわかります。抽出されたファイルはそのディレクトリにあります。このディレクトリはどこから来たのでしょうか?これはtar
ファイルに含まれており、ファイルと一緒に抽出されました。
次にギターの曲の抽出をしてみましょう。これを行うには、前のコマンドとほぼ同じコマンドを使用しますが、1つ重要な違いがあります。.bz2
拡張子のサフィックスは、bzip2コマンドを使用して圧縮されていることを示しています。-z
(gzip)オプションを使用する代わりに、-j
(bzip2)オプションを使用してbz2ファイルを解凍します。
tar -xvjf guitar_songs.tar.bz2
ここでも、抽出されたファイルはターミナルにリストされます。念のため、.tar.bz2
ファイルに対してtar
で使用したコマンドラインオプションを説明します。
- -x:tarファイルからファイルを抽出します。
- -v:展開されたファイルのリストを表示します。
- -j:tarファイルを解凍するためにbzip2を使用します。
- -f:tarが処理するtarファイルの名前です。
ダウンロードディレクトリ内のファイルをリストすると、ギターの曲という名前の別のディレクトリが作成されていることがわかります。
ファイルを抽出する場所の選択
現在のディレクトリ以外の場所にファイルを抽出したい場合は、-C
(指定ディレクトリ)オプションを使用してターゲットディレクトリを指定できます。
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Documents/Songsディレクトリを見ると、Guitar Songsディレクトリが作成されていることがわかります。
ターゲットディレクトリはすでに存在している必要があります。存在しない場合、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 | less
ファイルのリストには-z
オプションを使用する必要がないことに注意してください。.tar.gz
ファイルからファイルを抽出する場合にのみ、-z
オプションを追加する必要があります。同様に、tar.bz2
ファイル内のファイルをリストするには、-j
オプションは必要ありません。
出力をスクロールすると、tarファイル内のすべてがウクレレの曲というディレクトリに保存されており、そのディレクトリ内にはファイルとその他のディレクトリがあることがわかります。
ウクレレの曲のディレクトリには、Random Songs、Ramones、およびPossiblesというディレクトリが含まれていることがわかります。
tarファイル内のディレクトリからすべてのファイルを抽出するには、次のコマンドを使用します。パスにはスペースが含まれているため、二重引用符で囲まれていることに注意してください。
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
単一のファイルを抽出するには、ファイルのパスと名前を指定します。
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
ワイルドカードを使用してファイルを選択して抽出できます。ワイルドカードでは、*
は任意の文字列を表し、?
は任意の1文字を表します。ワイルドカードを使用するには、--wildcards
オプションを使用する必要があります。
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
ディレクトリを抽出せずにファイルを抽出する
tarファイルのディレクトリ構造をハードドライブに再作成したくない場合は、--strip-components
オプションを使用します。--strip-components
オプションには数値パラメータが必要です。この数値は、無視するディレクトリのレベル数を表します。無視されたディレクトリのファイルは引き続き抽出されますが、ディレクトリ構造はハードドライブに複製されません。
サンプルのtarファイルで--strip-components=1
を指定すると、tarファイル内の最上位のウクレレの曲のディレクトリはハードドライブに作成されません。そのディレクトリに抽出されたはずのファイルとディレクトリは、ターゲットディレクトリに抽出されます。
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
ファイルから高いレベルのきめ細かい制御でファイルを抽出できるようにするために、これらのオプションのほんの一部を覚えておくだけで済みます。
コメントする