Unix プラットフォームでは、tar コマンド 主要なアーカイブ ユーティリティです。さまざまな tar コマンド オプションを理解すると、アーカイブ ファイルの操作をマスターするのに役立ちます。
この記事では、さまざまな tar の例を確認してみましょう tar アーカイブを作成する方法 (gzip および bzip 圧縮を使用)、単一のファイルまたはディレクトリを抽出する方法、tar アーカイブの内容を表示する方法、tar アーカイブの整合性を検証する方法、tar アーカイブとファイル システムの違いを見つける方法、tar のサイズを見積もる方法など作成前のアーカイブなど、
1. tar コマンドを使用してアーカイブを作成する
オプション cvf を使用して圧縮されていない tar アーカイブを作成する
これは、tar アーカイブを作成するための基本的なコマンドです。
$ tar cvf archive_name.tar dirname/
上記のコマンドで:
- c – 新しいアーカイブを作成
- v – 処理されたファイルを詳細にリストします。
- f – 以下はアーカイブ ファイル名です
オプション cvzf を使用して tar gzip アーカイブを作成する
上記の tar cvf オプションは、圧縮を提供しません。 tar アーカイブで gzip 圧縮を使用するには、以下に示すように z オプションを使用します。
$ tar cvzf archive_name.tar.gz dirname/
- z – gzip でアーカイブをフィルタリングします
注: .tgz は .tar.gz と同じです
注: すべてのアーカイブ作成 (または表示、または抽出) で「cvf」(または tvf、または xvf) オプションを変更せずに、覚えやすいように最後に追加のオプションを追加するのが好きです。つまり、アーカイブの作成には cvf、圧縮された gzip アーカイブの作成には cvfz、圧縮された bzip2 アーカイブの作成には cvfj などです。この方法が適切に機能するためには、オプションの前に – を指定しないでください。
オプション cvjf を使用して bzip された tar アーカイブを作成する
以下に示すように、bzip2 tar アーカイブを作成します。
$ tar cvfj archive_name.tar.bz2 dirname/
- j – bzip2 でアーカイブをフィルタリングします
gzip と bzip2 の比較 :bzip2 は、gzip よりも圧縮と解凍に時間がかかります。 bzip2 アーカイブ サイズは gzip よりも小さいです。
注: .tbz および .tb2 は .tar.bz2 と同じ
2. tar コマンドを使用してアーカイブを抽出 (untar) する
オプション xvf を使用して *.tar ファイルを抽出します
以下に示すように、オプション x を使用して tar ファイルを抽出します。
$ tar xvf archive_name.tar
- x – アーカイブからファイルを抽出
オプション xvzf を使用して、gzip された tar アーカイブ ( *.tar.gz ) を抽出します
オプション z を使用して、gzip tar アーカイブを解凍します。
$ tar xvfz archive_name.tar.gz
オプション xvjf を使用して、bzip された tar アーカイブ ( *.tar.bz2 ) を抽出する
オプション j を使用して、bzip2 tar アーカイブを解凍します。
$ tar xvfj archive_name.tar.bz2
注: 上記のすべてのコマンドで、v はオプションであり、処理中のファイルを一覧表示します。
3. tar コマンドを使用してアーカイブを一覧表示する
オプション tvf を使用して抽出せずに tar アーカイブ ファイルの内容を表示する
以下に示すように、抽出する前に *.tar ファイルの内容を表示できます。
$ tar tvf archive_name.tar
オプション tvzf を使用して、抽出せずに *.tar.gz ファイルの内容を表示する
以下に示すように、抽出する前に *.tar.gz ファイルの内容を表示できます。
$ tar tvfz archive_name.tar.gz
オプション tvjf を使用して、抽出せずに *.tar.bz2 ファイルの内容を表示する
以下に示すように、抽出する前に *.tar.bz2 ファイルの内容を表示できます。
$ tar tvfj archive_name.tar.bz2
4.少ないコマンドで tar ファイルの内容を一覧表示する
アーカイブ内のファイルの数が多い場合は、tar の出力を少なくすることができます。ただし、以前の記事の 1 つで説明されているように、less コマンドを直接使用して tar アーカイブの出力を表示することもできます。
5. tar、tar.gz、tar.bz2 ファイルから 1 つのファイルを抽出
tar アーカイブから特定のファイルを抽出するには、次のように tar xvf コマンドの最後にファイル名を指定します。次のコマンドは、大きな tar ファイルから特定のファイルのみを抽出します。
$ tar xvf archive_file.tar /path/to/file
以下に示すように、それぞれ圧縮方法 gzip または bzip2 に従って、関連するオプション z または j を使用します。
$ tar xvfz archive_file.tar.gz /path/to/file $ tar xvfj archive_file.tar.bz2 /path/to/file
6. tar、tar.gz、tar.bz2 ファイルから 1 つのディレクトリを抽出
tar アーカイブから 1 つのディレクトリ (およびそのサブディレクトリとファイル) を抽出するには、以下に示すように、tar xvf コマンドの最後にディレクトリ名を指定します。以下は、大きな tar ファイルから特定のディレクトリのみを抽出します。
$ tar xvf archive_file.tar /path/to/dir/
tar アーカイブから複数のディレクトリを抽出するには、以下に示すように、tar xvf コマンドの末尾に個々のディレクトリ名を指定します。
$ tar xvf archive_file.tar /path/to/dir1/ /path/to/dir2/
以下に示すように、それぞれ圧縮方法 gzip または bzip2 に従って、関連するオプション z または j を使用します。
$ tar xvfz archive_file.tar.gz /path/to/dir/ $ tar xvfj archive_file.tar.bz2 /path/to/dir/
7.正規表現を使用して、tar、tar.gz、tar.bz2 アーカイブからファイルのグループを抽出
正規表現を指定して、指定したパターンに一致するファイルを抽出できます。たとえば、次の tar コマンドは、拡張子が pl のすべてのファイルを抽出します。
$ tar xvf archive_file.tar --wildcards '*.pl'
オプションの説明:
- –wildcards *.pl – pl 拡張子のファイル
8.オプション -r を使用して既存のアーカイブにファイルまたはディレクトリを追加する
以下に示すように、既存の tar アーカイブに追加のファイルを追加できます。たとえば、ファイルを *.tar ファイルに追加するには、次のようにします:
$ tar rvf archive_name.tar newfile
この新しいファイルは、既存の archive_name.tar に追加されます。 tar にディレクトリを追加することも同様です。
$ tar rvf archive_name.tar newdir/
注: ファイルまたはディレクトリを圧縮アーカイブに追加することはできません。そうしようとすると、以下に示すように「tar:圧縮されたアーカイブを更新できません」というエラーが表示されます。
$ tar rvfz archive_name.tgz newfile tar: Cannot update compressed archives Try `tar --help' or `tar --usage' for more information.
9.オプション -W を使用して tar で利用可能なファイルを確認します
tar ファイルの作成の一部として、以下に示すように、オプション W を使用して作成されたアーカイブ ファイルを確認できます。
$ tar cvfW file_name.tar dir/
アーカイブ ファイルまたはファイル システムからディレクトリ/ファイルを削除する場合は、以下に示すように、実行する前にアーカイブ ファイルを確認することをお勧めします。
$ tar tvfW file_name.tar Verify 1/file1 1/file1: Mod time differs 1/file1: Size differs Verify 1/file2 Verify 1/file3
出力行が Verify で始まり、異なる行がない場合、ファイル/ディレクトリは OK です。そうでない場合は、問題を調査する必要があります。
注: 圧縮されたアーカイブ ファイル ( *.tar.gz、*.tar.bz2 ) の場合、検証を行うことはできません。
圧縮されたアーカイブであっても、アーカイブとファイル システムの違いを見つけることができます。また、Verify のある行を除いて、上記と同じ出力も示しています。
gzip アーカイブ ファイルとファイル システムの違いを見つける
$ tar dfz file_name.tgz
bzip2 アーカイブ ファイルとファイル システムの違いを見つける
$ tar dfj file_name.tar.bz2
10. tar アーカイブのサイズを見積もる
次のコマンドは、tar ファイルを作成する前に、tar ファイルのサイズ (KB 単位) を見積もります。
$ tar -cf - /directory/to/archive/ | wc -c 20480
次のコマンドは、tar.gz、tar.bz2 ファイルを作成する前に、圧縮された tar ファイルのサイズ (KB 単位) を見積もります。
$ tar -czf - /directory/to/archive/ | wc -c 508 $ tar -cjf - /directory/to/archive/ | wc -c 428