ホーム テクノロジー LINUX Linux の Tar コマンド: 構文、オプション、および例

Linux の Tar コマンド: 構文、オプション、および例


Linux でのファイルのアーカイブとアーカイブ解除は、効率的なファイル管理のためにすべての Linux ユーザーが知っておくべき重要な機能です。ファイルとディレクトリの両方を圧縮する場合、Linux の「tar コマンド」が救世主となることがあります。初心者であっても、熟練した Linux ユーザーであっても、tar コマンドとそのオプションに関する十分なノウハウを持っていると、さまざまなタスクに役立ちます。この記事では、Linux で tar コマンドを使用する方法を説明します。構文、オプション、例をすべて説明します。

Linuxのtarコマンドとは何ですか

tar コマンドについて説明する前に、アーカイブ ファイルとは何かを理解しましょう。これは、圧縮された形式の複数のファイルとディレクトリで構成されるファイルの種類です。この圧縮形式は、ファイル サイズが小さいため、少ない帯域幅を使用して保存または転送できます。 .gz、tar.bz、.zip など、さまざまなファイル アーカイブ形式があります。zip ファイルの処理方法を知りたい場合は、Linux でファイルを圧縮および解凍する方法に関する広範なガイドをお読みください。

「Tape Archive」の略称である tar コマンドについては、さまざまなタイプのアーカイブ ファイルを作成および管理するために使用される Linux ユーティリティ ツール です。 tar コマンドは、アーカイブ ファイルを作成および変更できるさまざまなタイプのツールの集合です。 tar コマンドを使用すると、ファイルとディレクトリの両方で構成される .tar、.tar.gz、.tar.bz2 などのさまざまなタイプのアーカイブ ファイルを作成できます。これらのファイル タイプはすべて、圧縮率と全体のファイル サイズが異なります。

Linux の Tar コマンド: 構文とオプション

Linux の tar コマンドは非常に使いやすく、構文も単純です。 tar コマンドを使用する基本的な構文は次のとおりです。

tar <options> <archive_file_name> <files_to_archive>

上記の構文では、 <archive_file_name> は作成されるアーカイブ ファイルの名前で、 <files_to_archive> アーカイブするファイルとディレクトリのリストを指定します。 tar コマンドで使用できるオプションには、次のようなものがあります。

オプション 説明
-c 新しいアーカイブを作成するために使用されます
-f アーカイブファイル名の指定に使用されます
-d アーカイブ ファイルとファイル システムを比較し、相違点があればそれをリストします。
-r 新しいファイルをアーカイブ ファイルに追加します
-t アーカイブ ファイルの内容を一覧表示します
-u 更新されたファイルのみを追加します
-バツ アーカイブファイルからファイルを抽出する
-j .bz2 ファイルから抽出する
-z .gz ファイルから抽出する
-v 実行中の各操作に関する情報を表示する

Linux で .tar アーカイブ ファイルを作成する方法

ファイルとディレクトリが .tar ファイルに圧縮されると、そのようなアーカイブ ファイルは tarball と呼ばれます。圧縮レベルは中程度ですが、.zip よりも確実に高い圧縮レベルです。ファイルとディレクトリを tarball に圧縮する構文は次のとおりです。

tar -cvf <archive_filename>.tar <file_or_directory_to_archive>

たとえば、「~/Documents/test」という名前のディレクトリを「test_archive.tar」という名前のアーカイブ ファイルに圧縮するには、次のコマンドを使用する必要があります。

tar -cvf test_archive.tar ~/Documents/test

Linux で .tar.gz アーカイブ ファイルを作成する方法

別のデータ圧縮ユーティリティである Gzip は、「Deflate アルゴリズム」を使用してファイルを圧縮します。 tarball に圧縮されたファイルと比較して、 圧縮レベルが高くなり ます。 Gzip は、拡張子が .tar.gz の小さいファイル サイズを作成するため、最もよく使用される形式です。ただし、Gzip を使用して圧縮されたファイルを解凍する場合は、.tar ファイルに比べて時間がかかります。ファイルまたはディレクトリを .tar.gz ファイルに圧縮するには、次の構文を使用します。

tar -cvzf <archive_file_name> .tar.gz <file_or_directory_to_compress>

「~/Documents/test」ディレクトリに「test.tar.gz」という名前のアーカイブ ファイルを作成するとします。次のコマンドを使用できます。

tar -cvzf test.tar.gz ~/Documents/test

Linux で .tar.bz2 アーカイブ ファイルを作成する方法

アーカイブ ファイルのサイズをさらに小さくしたい場合は、tar コマンドで bzip2 圧縮形式を使用します 。 bzip2 形式は、拡張子 .tar.bz を持つ非常に小さなファイルの作成に役立つ「 Burrows–Wheeler Algorithm 」を使用します。ファイルサイズは小さくなりますが、gzip に比べて圧縮と解凍の両方に時間がかかります。 bzip2 を使用してファイルを圧縮する主な欠点は、すべての Linux システムでサポートされている gzip とは異なり、一部の機能を簡略化した Linux システムではサポートされていないことです。

tar コマンドを使用してファイル/ディレクトリを bzip2 形式で圧縮するには、次の構文を使用する必要があります。

tar -cvjf <archive_file_name>.tar.bz2 <file_or_directory_to_compress>

たとえば、~/Documents/test ディレクトリ全体を「test.tar.bz2」に圧縮するには、次の構文を使用します。

tar -cvjf test.tar.bz2 ~/Documents/test

tar コマンドを使用してアーカイブ ファイルの内容を表示する方法

これで、アーカイブ ファイルの作成方法がわかりました。必要なファイルがすべてアーカイブされていることを確認するために、ファイルの内容を表示する必要がある場合があります。アーカイブ ファイルの内容を表示するには、上記の構文の -c フラグを -t フラグに置き換えます。

tar -tvf <archive_file_name>

この構文は、.tar、.tar.gz、.tar.bz2 に関して 、上記の 3 種類のアーカイブ ファイルすべてで機能します 。たとえば、ファイル「test_archive.tar.gz」の内容を表示したい場合は、次のコマンドを使用します。

tar -tvf test_archive.tar.gz

tar コマンドを使用してアーカイブ ファイルからファイルを抽出する

次に、Linux でアーカイブされたファイルからすべてのファイルを抽出する方法を見てみましょう。アーカイブされたファイルまたはディレクトリからファイルを抽出するには、次のコマンドを使用します。

tar -xvf <archive_file_name>

上記の構文を使用すると、ファイルは同じディレクトリに抽出されます。たとえば、次のコマンドを使用して test.tar.gz ファイルを抽出します。

tar -xvf test.tar.gz

ファイルを別のディレクトリに抽出する場合は、次の構文を使用する必要があります。

tar -xvf <archive_file_name> -C <target_directory_name>

たとえば、ファイル「test_archive.tar.gz」を「~/Documents/test」ディレクトリに抽出する場合は、次のコマンドを使用します。

tar -xvf test_archive.tar.gz -C ~/Documents/test

Linux でアーカイブ ファイルから選択したファイルを抽出する

tar コマンドには、アーカイブ ファイルからすべてのファイルを抽出するだけでなく、選択したファイルのみを抽出できるという利点もあります。アーカイブ ファイルの種類に応じて、次のいずれかの構文を使用して、選択したファイルをアーカイブ ファイルから抽出します。

  • .tar ファイルの場合:

tar -xvf <archive_file> <file1_to_extract> <file2_to_extract> <file3_to_extract>

  • .tar.gz ファイルから抽出します。

tar -xzvf <archive_file> <file1_to_extract> <file2_to_extract> <file3_to_extract>

  • .tar.bz2 ファイルの場合:

tar -jxvf <archive_file> <file1_to_extract> <file2_to_extract> <file3_to_extract>

たとえば、「test_archive.tar.gz」ファイルからファイル「test.py」と「test.png」を抽出する場合は、次の構文を使用します。

tar -xzvf test.tar.gz home/intel/Documents/test/test1/test3.txt home/intel/Documents/test/example_1.pdf

tar コマンドを使用してパターンが一致するファイルを抽出する

1 種類のファイルのみを抽出したいが、ファイル名を 1 つずつ書きたくない場合を考えてみましょう。このような場合、一般的なワイルドカード パターンを使用して、抽出するファイルと一致させることができます。 tar コマンドを使用してパターンでファイルを抽出する構文は次のとおりです。

  • .tar ファイルの場合 –

tar -xvf <archive_file> --wildcards '<wildcard_pattern>'

  • .tar.gz ファイルから抽出 –

tar -xzvf <archive_file> --wildcards '<wildcard_pattern>'

  • .tar.bz2 ファイルの場合 –

tar -xjvf <archive_file> --wildcards '<wildcard_pattern>'

たとえば、「test_archive.tar.bz2」ファイルからすべての .png ファイルを抽出する場合は、次のコマンドを使用します。

tar -xjvf test_archive.tar.bz2 --wildcards '*.png'

extracting only selected files inside an archive file
extracting only selected files inside an archive file
選択したファイルのみを抽出する

tar コマンドを使用してファイルをアーカイブ ファイルに追加する

誤ってアーカイブファイルにファイルを追加し忘れてしまう場合があります。このような状況では、必要なファイルをすべて含むアーカイブ ファイルを作成して新たに開始するか、単純に -r フラグを使用して見逃したファイルを追加することができます。ほとんどのユーザーは、2 番目の方法の方が実現可能であることに同意するでしょう。新しいファイル/ディレクトリを tar アーカイブに追加するには、次の構文を使用します。

tar -rvf <archive_file> <file_or_directory_to_add>

ファイル「test1.png」を「test_archive.tar」に追加したいとします。次のコマンドを使用できます。

tar -rvf test_archive.tar Documents/test/test1.png

: 上記の構文は .tar ファイルに対してのみ機能し、.tar.gz または .tar.bz2 ファイルに対しては機能しません。

tar コマンドを使用してアーカイブ ファイルからファイルを削除する

何らかの理由でファイルを見逃した場合にアーカイブ ファイルにファイルを追加できるのと同様に、-delete フラグを使用してアーカイブ ファイルからファイルを削除することもできます。アーカイブ ファイルからファイルを削除するには、次の構文を使用します。

tar --delete <file_to_delete> -f <archive_file_name>

たとえば、ファイル「test.txt」をアーカイブ「test_archive.tar」から削除するには、次のコマンドを使用します。

tar -v --delete home/intel/Documents/test/example_1.pdf -f test_archive.tar

よくある質問

zip コマンドと tar コマンドの違いは何ですか?

tar コマンドはファイルとディレクトリをアーカイブするだけで、デフォルトでは圧縮しません。 gzip または bzip2 の -z または -j フラグと組み合わせると、tar は優れたレベルの圧縮を達成できます。一方、zip コマンドは、ファイル/ディレクトリの圧縮とアーカイブの両方ができます。

tar コマンドを使用してリモート ファイルをアーカイブできますか?

はい、tar コマンドを SSH と組み合わせて使用​​して、リモート ファイルをアーカイブおよび転送できます。たとえば、リモート サーバーからローカル マシンにファイルをアーカイブして転送するには、コマンド ssh user@remote_host "tar -czvf - <path_to_remote_files>" | tar -xzvf - -C <path_to_local_directory > を使用します。 ssh user@remote_host "tar -czvf - <path_to_remote_files>" | tar -xzvf - -C <path_to_local_directory >

絶対に観るべき!「 Linux の Tar コマンド: 構文、オプション、および例」についてベスト動画選定

【ワンポイントレクチャー】 tarとzipコマンドで行う圧縮と解凍【Linux初心者:第1回】
初心者向け Linux コマンド ライン チュートリアル 36 – ファイルを圧縮および抽出するための tar コマンド