tarで特定ファイルだけを展開する方法を完全ガイド!Linuxアーカイブの基本を初心者にもわかりやすく解説
生徒
「先生、tarファイルって全部を展開しないといけないんですか?中の一部だけ取り出したいんですが…」
先生
「いいえ、tarコマンドを使えば特定のファイルだけを展開することができますよ。大きなアーカイブファイルから必要なものだけ取り出せるので便利です。」
生徒
「それは便利ですね!でも、どうやって中身を確認したり、特定のファイルを指定したりするんですか?」
先生
「順番に説明していきますね。まずはtarファイルの中身を確認する方法から始めましょう。」
1. tarコマンドとアーカイブファイルの基本
tarコマンドは、Linuxで複数のファイルやディレクトリを一つにまとめるためのコマンドです。このまとめたファイルのことを「アーカイブファイル」や「tarファイル」と呼びます。
よく見かける拡張子は.tarや.tar.gzです。.tar.gzは圧縮もされているファイルで、より容量が小さくなっています。これは引っ越しのときに荷物を段ボール箱に詰めるようなイメージで、複数のファイルを一つの箱にまとめて管理しやすくしているのです。
通常は全てのファイルを展開(取り出す)しますが、大容量のアーカイブから必要なファイルだけを取り出したい場合もあります。そんなときに特定ファイルの展開機能が役立ちます。
2. tarファイルの中身を確認する方法
特定のファイルを展開する前に、まずはアーカイブファイルの中に何が入っているのかを確認する必要があります。中身を見ずにファイル名を指定しても、タイプミスなどでうまくいかないことがあるからです。
アーカイブの中身を確認するには、-tオプション(listの意味)を使います。-tは「table of contents」の略で、目次を表示するという意味です。
tar -tf archive.tar
file1.txt
file2.txt
documents/report.pdf
images/photo.jpg
ここで-tは中身の一覧表示、-fはファイル名を指定するオプションです。-fの後には必ずアーカイブファイル名を書きます。圧縮されたファイル(.tar.gz)の場合は、-zオプションを追加します。
tar -tzf archive.tar.gz
config/settings.conf
data/database.sql
scripts/backup.sh
この一覧を見て、展開したいファイルのパスを正確に把握しましょう。パスとはファイルの場所を示す住所のようなもので、documents/report.pdfのように表示されます。
3. 特定ファイルだけを展開する基本的な方法
アーカイブの中身が確認できたら、いよいよ特定のファイルだけを展開してみましょう。基本的な書き方は以下の通りです。
tar -xf archive.tar ファイル名
ここで-xは「extract(抽出する)」の意味で、ファイルを展開するオプションです。実際の例を見てみましょう。
tar -xf archive.tar file1.txt
ls
archive.tar file1.txt
このコマンドを実行すると、archive.tarの中からfile1.txtだけが取り出され、現在のディレクトリに展開されます。他のファイルは展開されないので、必要なものだけを素早く取得できます。
圧縮されたtarファイル(.tar.gzや.tgz)から展開する場合は、-zオプションを追加します。
tar -xzf archive.tar.gz config/settings.conf
このように、ファイル名の指定は一覧表示で確認したパスをそのまま書きます。ディレクトリ名も含めて正確に入力することが重要です。
4. 複数の特定ファイルをまとめて展開する
一つだけでなく、複数の特定ファイルを同時に展開することもできます。ファイル名を空白(スペース)で区切って並べるだけです。
tar -xf archive.tar file1.txt file2.txt documents/report.pdf
この方法を使えば、必要なファイルだけを効率よく取り出せます。例えば、大きなバックアップファイルから特定の設定ファイルと重要なドキュメントだけを復元したいときなどに便利です。
ファイル名が長い場合や数が多い場合は、一行が長くなってしまいますが、バックスラッシュ(\)を使って改行することもできます。
5. ディレクトリ配下のファイルをまとめて展開する
特定のディレクトリ(フォルダ)の中にあるファイルを全て展開したい場合は、ディレクトリ名を指定します。これにより、そのディレクトリ以下の全てのファイルが展開されます。
tar -xf archive.tar documents/
このコマンドを実行すると、documentsディレクトリとその中の全てのファイルが展開されます。ディレクトリ名の最後にスラッシュ(/)を付けても付けなくても動作しますが、付けた方がディレクトリであることが分かりやすくなります。
これは、アーカイブの中で特定のプロジェクトフォルダだけを取り出したいときなどに役立ちます。例えば、複数のプロジェクトが入ったバックアップから一つのプロジェクトだけを復元する場合などです。
6. ワイルドカードを使った柔軟な展開方法
特定の拡張子を持つファイルだけを展開したい場合は、ワイルドカード(*)を使うことができます。ワイルドカードは「何でも当てはまる」という意味の特殊な記号です。
ただし、tarコマンドでワイルドカードを使う場合は、シェルによる展開を防ぐために--wildcardsオプションを付け、パターンをクォート(引用符)で囲む必要があります。
tar -xf archive.tar --wildcards '*.txt'
この例では、アーカイブの中から拡張子が.txtの全てのファイルが展開されます。シングルクォート(')で囲むことで、シェルではなくtarコマンドがワイルドカードを解釈するようになります。
また、特定のディレクトリ内の特定ファイルだけを展開することもできます。
tar -xf archive.tar --wildcards 'images/*.jpg'
この方法を使えば、画像ファイルだけ、設定ファイルだけといった柔軟な展開が可能になります。
7. 展開先のディレクトリを指定する方法
デフォルトでは、ファイルは現在のディレクトリに展開されますが、-Cオプション(Change directoryの意味)を使うことで展開先を指定できます。
tar -xf archive.tar -C /tmp/ file1.txt
このコマンドはfile1.txtを/tmp/ディレクトリに展開します。-Cオプションの後には展開先のディレクトリパスを指定し、その後にファイル名を書きます。
この方法は、作業ディレクトリを移動せずに別の場所にファイルを展開したいときに便利です。例えば、一時的な作業ファイルを/tmpに展開したり、特定のプロジェクトディレクトリに直接展開したりできます。
8. よく使うオプションの組み合わせ
tarコマンドには多くのオプションがあり、組み合わせることでより便利に使えます。ここでは実務でよく使うパターンを紹介します。
-vオプション(verboseの意味)を追加すると、展開中のファイル名が表示されるので、処理状況が分かりやすくなります。
tar -xvf archive.tar file1.txt
file1.txt
圧縮形式によってオプションを使い分ける必要があります。.tar.gzや.tgzは-z、.tar.bz2は-j、.tar.xzは-Jを使います。
また、--keep-old-filesオプションを使うと、既存のファイルを上書きせずに展開できます。これは誤って重要なファイルを上書きしてしまうのを防ぐのに役立ちます。
9. gzipとbzip2で圧縮されたtarファイルの扱い
Linuxでは、tarファイルはさらに圧縮されていることが多く、圧縮形式によって使うオプションが変わります。最も一般的なのはgzip圧縮とbzip2圧縮です。
gzip圧縮されたファイル(.tar.gzまたは.tgz)から特定ファイルを展開する場合は、-zオプションを使います。
tar -xzf backup.tar.gz config/database.conf
ls config/
database.conf
bzip2圧縮されたファイル(.tar.bz2)の場合は、-jオプションを使います。bzip2はgzipより圧縮率が高いですが、処理に時間がかかります。
tar -xjf archive.tar.bz2 documents/report.pdf
最近では.tar.xzという拡張子のファイルも増えています。これはxz圧縮で、さらに高い圧縮率を持ちます。この場合は-Jオプション(大文字のJ)を使用します。
圧縮形式を間違えるとエラーになるので、ファイルの拡張子をよく確認してから適切なオプションを選びましょう。
10. トラブルシューティングと注意点
tarで特定ファイルを展開する際に、いくつか注意すべき点があります。まず、ファイル名は完全一致でなければなりません。一覧表示で確認したパスと完全に同じものを指定する必要があります。
例えば、アーカイブ内のパスが./documents/file.txtの場合、documents/file.txtでは展開できないことがあります。先頭の./の有無に注意しましょう。
また、展開するとアーカイブ内のディレクトリ構造がそのまま再現されます。つまり、documents/report.pdfを展開すると、現在のディレクトリにdocumentsフォルダが作られ、その中にreport.pdfが配置されます。
ファイルが見つからないというエラーが出た場合は、もう一度tar -tfでパスを確認しましょう。大文字小文字の違いやスペースの有無なども正確に合わせる必要があります。
権限の問題でエラーが出る場合もあります。特に/rootなど管理者権限が必要な場所に展開する場合は、sudoコマンドを使う必要があります。ただし、一般的な作業では通常のユーザー権限で十分です。