logo

Linux/Unix の Tar コマンドと例

tar コマンドは次の短縮形です。 テープアーカイブ Linuxでは。このコマンドは、アーカイブの作成とアーカイブ ファイルの抽出に使用されます。で Linux 、これはアーカイブ機能を容易にする重要なコマンドの 1 つです。このコマンドを使用して、非圧縮および圧縮アーカイブ ファイルを作成したり、それらを変更したり保守したりすることもできます。

Tar は、コンピューティングにおいて複数のファイルを 1 つのアーカイブ ファイルに収集するコンピューター ソフトウェアのユーティリティです。多くの場合、これはバックアップと配布の目的で tarball として知られています。このタイトルは、実際にはファイル システムを使用せずにシーケンシャル I/O デバイス上のデータを指定するために開発されたため、「テープ アーカイブ」から取得されました。 tar によって作成されたアーカイブ データ グループには、ディレクトリ構成、ファイル アクセス許可、所有権、タイムスタンプ、名前などの多くのファイル システム パラメーターが含まれています。 pax を支持して、POSIX は tar を放棄しましたが、tar は依然として広く使用されています。

まず、1979 年 1 月にバージョン 7 Unix で発表され、tp プログラムを置き換えました。データを保存するために、ファイル構造は POSIX.1-1988 およびその後の POSIX.1-2001 で標準化され、ほとんどすべての最新のファイル アーカイブ システムでサポートされるパターンになりました。 Unix 系オペレーティング システムには通常、tar ファイルをサポートするツールと、bzip2 や gzip などの圧縮に使用されるユーティリティが含まれています。
Microsoft 10 April 2018 Update 以降、BSD-tar は Microsoft Windows に含まれており、Windows 上でこれらのパターンを読み書きするためのサードパーティ ツールが 2 つ以上あります。

tarのファイル形式

現在のファイル形式と過去のファイル形式を含め、多くの tar ファイル形式が利用可能です。 POSIX では、pax と ustar という 2 つの tar 形式が書かれています。

ヘッダ

ファイル ヘッダー レコードには、ファイルのメタデータが含まれます。ヘッダー レコードでは、情報は ASCII 標準でエンコードされ、異なるバイト順序を使用して異なるアーキテクチャ間での柔軟性が確保されます。したがって、アーカイブ内のすべてのファイルが ASCII テキスト ファイルであり、ASCII 名が含まれている場合、そのアーカイブは ASCII テキスト ファイル (複数の NUL 文字を含む) になります。

次の表では、実際の Unix tar 形式で定義されているいくつかのフィールドについて説明します。リンク ファイル/インジケーター タイプ テーブルには、いくつかの最新の拡張機能が含まれています。フィールドが未使用の場合、フィールドにはさまざまな NUL バイトが埋め込まれます。

POSIX.1-1988 以前の tar ヘッダー:

分野 フィールドサイズ フィールドオフセット
ファイル名 100 0
ファイルモード 8 100
所有者の数値ユーザー ID 8 108
グループの数値ユーザー ID 8 116
バイトファイルサイズ 12 124
Unix 時刻の数値形式の最終変更時刻 12 136
ヘッダーレコードのチェックサム 8 148
リンクインジケーター 1 156
リンクされたファイル名 100 157

Ustart形式

Ustar 形式では、1988 年から POSIX IEEE P1003.1 標準によって発表された、ほとんどすべての最新の tar プログラムのアーカイブの書き込みと読み取りが行われます。これにより、追加のヘッダー フィールドが導入されました。以前の tar プログラムは追加情報を回避していましたが、新しいプログラムは「Ustar」文字列の存在をチェックして、新しい形式が使用されているかどうかを判断します。

分野 フィールドサイズ フィールドオフセット
以前の形式と同様に多くのフィールド 156 0
タイプフラグ 1 156
以前の形式と同様のフィールド 100 157
'ustar' Ustar インジケーター、その後 NUL 6 257
「00」ウスターバージョン 2 263
所有者のユーザー名 32 265
所有者のグループ名 32 297
デバイスのメジャー番号 8 329
デバイスのマイナー番号 8 337
ファイル名のプレフィックス 155 3.4.5

POSIX.1-2001/人

Sun は 1997 年に tar 形式に拡張機能を追加する技術を提案しました。その後、この技術は POSIX.1-2001 標準として承認されました。この形式は pax 形式または拡張 tar 形式と呼ばれます。 mtime、atime、linkpath、gname、uname、sizes、gid、uid、グループ/ユーザー名とパス名の文字セット定義など、一部のタグは POSIX 標準で指定されています。

tar の主な実装

主要な実装は元の順序で記載されています。

    ソラリスタール 実際の Unix V7 に基づいて、Solaris OS ではデフォルトとして提供されます。 GNU タール は、ほぼすべての Linux ディストリビューションのデフォルトです。これは、1987 年に開始されたパブリック ドメイン実装 pdtar に基づいています。最近のエディションでは、GNU、pax、v7、ustar などの多くの形式を使用できます。 FreeBSD タール は、Mac OS X など、ほぼすべての Berkeley Software Distribution ベースの OS のデフォルトの tar になりました。 シリータール その拡張機能のいくつかは有名であったため、歴史的に重要です。 1997年4月に初めて発売されました。 Python tarファイル gnu、pax、ustar などの 2 つ以上の tar 形式をサポートします。 SunOS tar 拡張フォーマットおよび V7 フォーマットを読み取ることはできますが、作成することはできません。 pax は、アーカイブ作成のデフォルト形式です。 2003 年からユーザーが利用できるようになりました。

さらに、ほとんどの cpio および pax 実装では、2 つ以上の tar ファイル タイプを作成および読み取ることができます。

tar コマンドの構文:

 tar [options] [archive-file] [directory or file to be archived] 

tar コマンドのオプション

tar コマンドのさまざまなオプションを以下に示します。

    -c:このオプションはアーカイブの作成に使用されます。-f:このオプションは、指定されたファイル名とともにアーカイブを作成するために使用されます。-バツ:このオプションはアーカイブを抽出するために使用されます。-で:既存のアーカイブ ファイルにアーカイブを追加するために使用できます。-t:アーカイブされたファイル内のファイルを表示またはリストするために使用されます。-A:このオプションは、アーカイブ ファイルを連結するために使用されます。-で:詳細な情報を表示するために使用できます。-j:これは、tbzip を使用してアーカイブ tar ファイルをフィルタリングするために使用されます。-と:これは zip ファイルであり、gzip を使用して tar ファイルを作成する tar コマンドに通知します。-r:このオプションは、既存の .tar ファイル内のディレクトリまたはファイルを更新および追加するために使用されます。-で:このオプションは、アーカイブ ファイルを検証するために使用されます。

アーカイブファイルの概要

アーカイブ ファイルは、メタデータを含む複数のファイルを含むファイルとして定義できます。これらのファイルは、保存と移植を容易にするために、複数のデータ ファイルを個別のファイルに収集するために使用されます。ファイルを圧縮してストレージ容量を削減するためにも使用できます。

tarコマンドの例

tar コマンドで広く使用されている重要な例のいくつかを以下に示します。

1. -cvf オプションを使用して非圧縮 tar アーカイブを作成する

このオプションにより、tar ファイルは次のようになります。 ファイル.tar 。これは、内部のすべての .txt ファイルのアーカイブです ミディル ディレクトリ。

コマンドは次のとおりです。

 $ tar cvf file.tar *.txt 

Linuxのtarコマンド

2. -xvf オプションを使用してアーカイブからファイルを抽出する

このオプションでは、アーカイブを通じてファイルを抽出できます。

コマンドは次のとおりです。

 $ tar xvf file.tar 

Linuxのtarコマンド

3. -z オプションを使用した tar アーカイブ上の gzip 圧縮

このオプションにより、tar ファイルは次のようになります。 ファイル.tar.gz。 これは、すべての .txt ファイルのアーカイブです。

コマンドは次のとおりです。

 $ tar cvzf file.tar.gz *.txt 

Linuxのtarコマンド

4. -xvzf オプションを使用して gzip tar アーカイブを抽出する

このオプションでは、file.tar.gz tar アーカイブ ファイルを通じてファイルを抽出できます。

コマンドは次のとおりです。

 $ tar xvzf file.tar.gz 

Linuxのtarコマンド

5. -j オプションを使用して圧縮 tar ファイルを作成する

このオプションは、アーカイブ ファイルの作成と圧縮に役立ちます。 gzip に比べて、解凍と圧縮の両方に時間がかかります。

コマンドは次のとおりです。

 $ tar cvfj file.tar.tbz hello1.txt 

Linuxのtarコマンド

6. Linux で指定した単一のディレクトリまたはファイルを解凍します。

このオプションは、現在のディレクトリ内、または -C オプションで指定したディレクトリ内のファイルを解凍するために使用されます。

コマンドは次のとおりです。

 $ tar -xvf file.tar -C file's path in the directory 

Linuxのtarコマンド

または、

 $ tar -xvf file.tar 

Linuxのtarコマンド

7. Linux で複数の .tar.tbz、.tar.gz、.tar ファイルを解凍する

このオプションは次のことに役立ちます。 広める または、tar.bz2、tar.gz、および tar アーカイブ ファイルから複数のファイルを抽出します。

このオプションの例は次のとおりです。

 $ tar -jxvf file.tar.tbz 'hello1.txt' 

Linuxのtarコマンド

または、

 $ tar -zxvf file.tar.gz 'hello1.txt' 'hello2.txt' 

Linuxのtarコマンド

または、

 $ tar -xvf file.tar 'hello1.txt' 'hello2.txt' 

Linuxのtarコマンド

8. 既存の tar.tbz、tar.gz、tar ファイルのサイズを確認します。

このコマンドは、上で説明したアーカイブ ファイルのサイズをキロバイト (KB) 単位で表示するのに役立ちます。

コマンドは次のとおりです。

 $ tar -czf - file2.tar.tbz | wc -c 

または、

 $ tar -czf - file1.tar.gz | wc -c 

または、

 $ tar -czf - file.tar | wc -c 

Linuxのtarコマンド

9. 既存の tar ファイルを更新します。

Linux で既存の tar ファイルを更新するコマンドは次のとおりです。

 $ tar rvf file.tar *.txt 

10. コンテンツリストと tf オプションを使用した tar ファイルの記述

このオプションは、アーカイブ ファイル全体のリストを一覧表示するのに役立ちます。また、tar ファイル内の特定のコンテンツをリストすることもできます。

コマンドは次のとおりです。

 $ tar tf file.tar 

Linuxのtarコマンド

11. -tvf オプションを使用してアーカイブを表示する

Linux では、-tvf オプションを使用してアーカイブを表示できます。

コマンドは次のとおりです。

 $ tar -tvf file.tar 

Linuxのtarコマンド

12. ファイル名を引数として渡して tar ファイルを検索します。

このオプションでは、アーカイブされたファイルとその情報を表示できます。

コマンドは次のとおりです。

 $ tar tvf file.tar filename 

Linuxのtarコマンド

13. パイプを使用して「grep コマンド」をスローし、検索対象を検索する

このオプションは、言及された画像またはテキストのみをリストするのに役立ちます。 グリップ アーカイブされたファイルを通じて。

コマンドは次のとおりです。

 $ tar tvf file.tar | grep 'filename.file' 

または、

 $ tar tvf file.tar | grep 'text to search' 

Linuxのtarコマンド

ワイルドカードの概要

あるいは、ワイルドカードは、Linux ではワイルドカード文字またはワイルド文字と呼ばれます。複数の文字を表現したり置換したりするために使用される記号です。

ぎこちないリンスペース

通常、ワイルドカードは、個々の文字を示す疑問符 (?)、または複数の文字を示すアスタリスク (*) です。

例-

14. .webp 形式の画像を見つける

これは、file.tar アーカイブから .webp 拡張子が付いたファイルのみを抽出するのに役立ちます。 -wildcards オプションは、抽出されるファイル名のワイルドカードを解釈するように tar に通知します。

ファイル名 (*.webp) は、シェルによって誤って展開されないようにワイルドカード (*) を保護するために、一重引用符で囲まれています。

コマンドは次のとおりです。

 $ tar tvf file.tar --wildcards '*.webp' 

Linuxのtarコマンド

注: 上記のコマンドでは、その特定のディレクトリで利用可能な各ファイルを取得するために、ファイル名の位置に「*」記号が適用されます。

15. tar アーカイブからファイルを削除する

--delete オプションを使用して、ファイルと tar アーカイブを削除できます。

コマンドは次のとおりです。

 $ tar --delete -f archive.tar file_name 

例:

 tar -delete -f file.tar hello1.txt 

出力:

Linuxのtarコマンド

hello1.txt ファイルは file.tar アーカイブから削除されました。

Linuxのtarコマンド