はじめに
GNU tar
( Tの略 類人猿AR chiver)コマンドは、Linuxシステムで最も広く使用されているアーカイブユーティリティです。ターミナルで直接利用できるtar
コマンドは、アーカイブコンテンツの作成、抽出、および一覧表示に役立ちます。
ユーティリティはシンプルで、ファイルの圧縮、バックアップの管理、またはrawインストールの抽出に役立つ多くのオプションがあります。
このチュートリアルでは、例と使用可能なオプションを通じてtarコマンドの使用方法を示します。

前提条件
- Linuxを実行しているシステム。
- コマンドライン/ターミナルへのアクセス。
- コマンドをテストするための1つまたは複数のファイル。
tarコマンド構文
tar
コマンドの一般的な構文は次のとおりです。
tar <operation mode> <option(s)> <archive> <file(s) or location(s)>
- 操作モード ファイルに対して実行される操作(作成、抽出など)を示します。このコマンドでは、1回の操作のみが許可および必要です。
- オプション 動作モードを変更する必要はありません。オプションの数に制限はありません。
- アーカイブ はファイル名と拡張子です。
- ファイル名 は、抽出、圧縮、またはワイルドカードに一致する名前のスペースで区切られたリストです。
操作とオプションを使用するための3つの可能な構文スタイルがあります:
1.伝統的なスタイル 、ダッシュなしでクラスター化されます。
例:
tar cfv <archive> <file(s) or location(s)>
2.UNIXショートオプションスタイル 、単一のダッシュとクラスター化されたオプションを使用:
tar -cfv <archive> <file(s) or location(s)>
または、各オプションの前にダッシュ:
tar -c -f -v <archive> <file(s) or location(s)>
3.GNUロングオプションスタイル 二重ダッシュとわかりやすいオプション名:
tar --create --file <archive> --verbose <file(s) or location(s)>
3つのスタイルすべて 単一のtar
で使用できます コマンド。
tarコマンドオプション
次の表に、一般的に使用される tar
の概要を示します。 操作とオプション。
コマンド | 役割 | 説明 |
---|---|---|
--create -c | 操作 | 新しいアーカイブを作成します。 |
--list -t | 操作 | アーカイブのコンテンツを一覧表示します。 |
--extract -x | 操作 | アーカイブから1つ以上のアイテムを抽出します。 |
--append -r | 操作 | 既存のアーカイブにファイルを追加します。 |
--concatenate -A | 操作 | 既存のアーカイブにアーカイブを追加します。 |
--compare --diff -d | 操作 | アーカイブメンバーをシステム上のファイルと比較します。 |
--delete | 操作 | アーカイブからメンバーを削除します。 |
--update -u | 操作 | 新しいファイルがアーカイブになく、既存のファイルよりも新しい場合にのみ、アーカイブを更新します。 |
--file=<archive> -f <archive> | オプション | ファイルを指定します。 |
-C | オプション | ディレクトリを変更します。 |
--verbose -v | オプション | ファイルを表示しますtar 実行中に動作します。 |
--wildcard | オプション | ワイルドカード検索オプションをレンダリングします。 |
--bzip2 -j | オプション | bzip2形式で圧縮アーカイブの読み取りまたは書き込みを行います。 |
--gzip -z | オプション | gzip形式で圧縮アーカイブを読み書きします。 |
--xz -J | オプション | xz形式で圧縮アーカイブの読み取りまたは書き込みを行います。 |
次のセクションの例に従って、tarの操作方法を学習してください。 。
tarコマンドの例
以下の例には、次の要件があります。
1. tar_examplesという名前のディレクトリを作成します ディレクトリに移動します:
mkdir tar_examples && cd tar_examples
2. filesという別のディレクトリを作成します tar_examples そのディレクトリに入ります:
mkdir files && cd files
3.ファイルを作成してファイルにデータを入力します ディレクトリ:
touch file{0..100}.txt
親ディレクトリに戻るには、次を使用します:
cd ..

以下のすべての例は、 tar_examplesから機能します ディレクトリ。
1。アーカイブを作成する
アーカイブを作成するための構文は、アーカイブの種類によって異なります。アーカイブを作成するには、 tar
を使用します -c
を使用 または--create
操作。
tarアーカイブを作成する
tarアーカイブ(tarballとも呼ばれます)を作成するには、次を使用します:
tar cf <archive name>.tar <file(s) or location(s)>
たとえば、ファイルをアーカイブします ディレクトリ:
tar cf files.tar files
出力には、アーカイブに追加された各ファイルが一覧表示されます。ディレクトリの内容を表示して、作成された file.tarを確認します。 アーカイブ:
tar cf files.tar files
出力には、アーカイブに追加された各ファイルが一覧表示されます。ディレクトリの内容を表示して、作成された file.tarを確認します。 アーカイブ:
ls -l

tar.gz圧縮アーカイブを作成する
-z
を追加します 圧縮されたGNUzip(gzip)ファイルを作成するオプション:
tar czf <archive name>.tar.gz <file(s) or location(s)>
例:
tar czf files.tar.gz files

ファイルサイズは、通常のtarballファイルおよび元のディレクトリよりも小さくなっています。
tar.bz2圧縮アーカイブを作成
bzip2はファイル圧縮プログラムであり、gzipの代替です。
tar.bz2を作成するには ファイルに、 -j
を追加します タグ:
tar cjf <archive name>.tar.bz2 <file(s) or location(s)>
例:
tar cjf files.tar.bz2 files

bzip2の方が圧縮率が高く、gzipよりも時間がかかります。
tar.xzアーカイブを作成
-J
を使用します tar.xz形式でアーカイブを圧縮するタグ:
tar cJf <archive name>.tar.xz <file(s) or location(s)>
例:
tar cJf files.tar.xz files

xz圧縮は、gzipとbz2の両方と比較した場合に最も時間がかかります。ただし、ファイルが大きい場合、xzの圧縮率が最も高くなります。
2。作成後にファイルを削除する
アーカイブ後にディスクからファイルを削除するには、 --remove-files
を使用します 最後のオプション:
tar cf <archive> <file(s) or location(s)> --remove-files
たとえば、ファイルを使用してtarアーカイブを作成します ディレクトリを作成し、1つのコマンドでディスクから削除します:
tar cf files.tar files --remove-files

ディレクトリの内容をチェックして、操作が正しく機能することを確認します。
3。アーカイブから抽出
アーカイブまたは圧縮アーカイブからの抽出には、 -x
を使用します または--extract
tar
を使用した操作 。追加のオプションは、ファイルの種類とtarがコンポーネントを抽出する場所によって異なります。
tarアーカイブからの抽出
tarアーカイブから抽出するための一般的な構文は次のとおりです。
tar xf <archive name>.tar
デフォルトでは、tarはすべてのコンポーネントを現在のディレクトリに抽出します。コンポーネントを抽出する場所を示すには、 -C
を追加します オプションでパスを指定します:
tar xfC <archive name>.tar <path>
たとえば、 extracted_tarという名前のディレクトリを作成するには files.tarからファイルを抽出します 、実行:
mkdir extracted_tar && tar xfC files.tar extracted_tar

コマンドは確認メッセージを出力しません。ディレクトリの内容をチェックして、コンポーネントが正常に抽出されたことを確認します。
tar.gzアーカイブから抽出
-z
を使用します tar.gzファイルを抽出するオプション:
tar xzf <archive name>.tar.gz
このコマンドは、現在のディレクトリの内容を抽出します。 -C
を追加します 場所を指定するオプション:
tar xzfC <archive name>.tar.gz <location>
たとえば、 extracted_gzという名前の新しいディレクトリを作成します files.tar.gzを抽出します 内容:
mkdir extracted_gz && tar xzfC files.tar.gz extracted_gz

tar.gz圧縮アーカイブは、他の圧縮形式と比較して、抽出にかかる時間が最短です。
tar.bz2アーカイブから抽出
tar.bz2圧縮アーカイブから現在のディレクトリにファイルを抽出するには、次を使用します。
tar xjf <archive name>.tar.bz2
次のコマンドを使用して、tar.bz2アーカイブを特定のディレクトリに抽出します。
tar xjfC <archive name>tar.bz2 <location>
たとえば、ディレクトリを作成し、 files.tar.bz2からコンテンツを抽出します。 :
mkdir extracted_bz2 && tar xjfC files.tar.bz2 extracted_bz2

tar.xzアーカイブから抽出
-J
を追加します tar.xz圧縮アーカイブから抽出するオプション。現在のディレクトリで抽出する構文は次のとおりです。
tar xJf <archive name>.tar.xz
コンテンツを特定のディレクトリに抽出するには、 -C
を使用します オプションを選択してパスを追加します:
tar xJfC <archive name>.tar.xz <location>
例として、ディレクトリを作成し、 files.tar.xzを抽出します。 内容:
mkdir extracted_xz && tar xJfC files.tar.xz extracted_xz

xz圧縮形式は、抽出時間に関してはgzとbz2の中間です。
4。上書き制御
tar上書きコントロールは、アーカイブ内のファイル名が作業ディレクトリ内のファイルと重複する状況を処理します。
考えられる3つの上書きアクションは次のとおりです。
1.作業ディレクトリ内のファイルを上書きします:
tar xf <archive> <Optional file(s) or location(s)> --overwrite
2.作業ディレクトリ内のファイルを上書きしないでください:
tar xf <archive> <Optional file(s) or location(s)> --keep-old-files

ファイルがすでに存在する場合、tarは抽出を実行しません。
3.既存のファイルよりも新しい場合にのみファイルを抽出します:
tar xf <archive> <Optional file(s) or location(s)> --keep-newer-files

作業ディレクトリ内のファイルが新しいか同じ年齢の場合、tarはファイルを抽出しません。
5。アーカイブコンテンツの一覧表示
次のコマンドを使用して、アーカイブの内容を一覧表示します。
tar tf <archive>
このオプションは、tarを含むすべてのファイル拡張子で機能します。
たとえば、 files.tarにファイルとディレクトリをリストします。 アーカイブ:
tar tf files.tar.gz

出力には、アーカイブに保存されているすべてのコンテンツが一覧表示されます。
6。アーカイブでファイルを検索する
tarを使用して特定のコンテンツを見つけるには2つの方法があります:
1. -t
アーカイブ内のファイルを一覧表示するオプションは、特定のファイルを見つけるのに便利です。コマンドの後にファイル名を追加します:
tar tf <archive> <file(s)>
たとえば、 file50.txtを検索するには files.tar.gz内 アーカイブ、実行:
tar tf files.tar.gz file/file50.txt

このオプションでは、ファイルへの可能なパスを知っている必要があります。
2. tar
を使用します grepコマンドと一緒に出力をフィルタリングします:
tar tf <archive> | grep <file(s)>
例:
tar tf files.tar.gz | grep file50.txt

このオプションでは、ファイルへの可能なパスを知る必要はありません。
7。アーカイブ内の複数のファイルを検索する
--wildcard
を使用する 複数のファイルインスタンスを照合するオプション。例:
tar tf files.tar.gz --wildcards file/files5*.txt

ファイルの名前が類似している場合、または特定のファイルタイプをフィルタリングする場合は、ワイルドカードマッチングを適用します。
8。アーカイブの作成時にファイルを除外する
作成中に特定のファイルをアーカイブから除外するには、次のオプションを追加します。
tar cf <archive> --exclude='<pattern>' <files(s) or location(s)>
たとえば、filesディレクトリからアーカイブを作成し、すべての.txtファイルを除外します。
tar cf files.tar --exclude='*.txt' files
アーカイブの内容を一覧表示します:
tar tf files.tar

出力には.txtファイルは表示されず、ファイルのみが表示されます。 アーカイブ内のディレクトリ。
9。アーカイブから単一ファイルを抽出する
1つまたは複数のファイルが必要な場合は、アーカイブ全体を抽出しないでください。
アーカイブから単一のファイルを取得するには:
1.内容を一覧表示し、ファイルが存在するかどうかを確認します。
tar tf files.tar | grep file100.txt
出力には、次のステップに必要なファイルへのパスが出力されます。
2.次のコマンドで特定のファイルを抽出します:
tar xf files.tar files/file100.txt

このコマンドは、ディレクトリ filesを作成します 示されたファイルのみで。同じ手順に従って、適切なタグを追加して、圧縮されたアーカイブから単一のファイルを抽出します。たとえば、 -z
を使用します tar.gzファイルからプルするオプション。
10。詳細オプション
verboseオプションは、tarコマンドの実行後に追加情報を表示します。 -v
を追加します または--verbose
結果を確認するために任意の操作に移動します。
たとえば、tar.gzファイルを作成し、 -v
を追加します。 :
tar czfv files.tar.gz files

出力には、アーカイブに追加された各ファイルが表示されます。
-v
を追加すると、一部のtarコマンドに追加情報が表示されます タグを2回付けます。たとえば、 -vv
を使用してファイルをアーカイブに追加してみてください :
tar czfvv files.tar.gz files

出力は長いリスト形式を出力し、ls-lコマンドの実行に似ています。
11。アーカイブから削除
アーカイブから削除するには、削除するファイルを見つけます。例:
tar tf files.tar | grep file100.txt
次に、 --delete
を使用してファイルを削除します タグ:
tar --delete -f files.tar files/file100.txt

削除オプションは圧縮されたものでは機能しません ファイル形式。
12。アーカイブにファイルを追加する
-r
を使用して、既存のアーカイブにファイルを追加します 鬼ごっこ。構文は次のとおりです。
tar rf <archive name>.tar <file(s) or location(s)>
たとえば、圧縮された files.tar.gzを追加します files.tarへのファイル アーカイブ:
tar rf files.tar files.tar.gz

すでに圧縮されているアーカイブは更新できないため、構文はtarballファイルに対してのみ機能します 。
13。アーカイブを組み合わせる
--concatenate
を使用します または-A
複数のアーカイブを組み合わせるオプション。基本的な構文は次のとおりです。
tar Af <archive to extend> <archive to extend with>
例として、既存の files.tarをコピーします cpコマンドを使用したファイル:
cp files.tar files_copy.tar
次に、2つのアーカイブを連結します。
tar Af files.tar files_copy.tar

連結が機能したことを確認するには、ファイルサイズを確認してください。
14。アーカイブとファイルの違い
アーカイブとディスク上のファイルの違いを確認するには、 -d
を使用します タグ:
tar df <archive name>
このコマンドは同じコンテンツを検索し、アーカイブにあるものと比較します。このオプションは、既存のファイルのみをチェックし、新しく追加されたファイルを無視します。
以下の手順は、 -d
の使用方法を示しています 、 --diff
、または --compare
tar
でタグ付け :
1. tarアーカイブを作成します:
tar cf files.tar files
2.アーカイブを既存のディレクトリと比較します:
tar df files.tar

出力には何も表示されません。つまり、既存のファイルに違いはありません。
3.ファイルの既存のファイルにテキストを追加します ディレクトリ:
echo 'Hello' >> files/file0.txt
4.アーカイブを既存のディレクトリと再度比較します:
tar df files.tar

今回の出力には、特定のファイルの変更時間とサイズの違いが表示されます。比較することで、アーカイブの作成後にシステムに加えられた変更についての洞察が得られます。
15。アーカイブ内のファイルを更新する
-u
を使用して、アーカイブ内の既存のファイルをディスクからの新しいバージョンで更新します オプション:
tar uf <archive> <file(s) or location(s)>
たとえば、 files.tarを更新します テキストファイルを変更したアーカイブ:
tar uf files.tar files
変更されたファイルのtarの内容を確認してください:
tar tfv files.tar | grep files0.txt

このコマンドは、上書きせずに変更されたファイルでアーカイブを更新します。
16。変更された時間
Tarには、ファイルのタイムスタンプを変更するためのさまざまなオプションがあります。 --mtime
を追加して、アーカイブを作成するときにカスタム日付を設定します オプションと日付の提供:
tar cf <archive> <file(s) or location(s)> --mtime=YYYY-MM-DD
たとえば、アーカイブを作成し、日付を1999年1月1日に設定します。
tar cf files.tar files --mtime=1999-01-01

または、現在の日時でファイルを抽出します:
tar xf files.tar -m

時間で作業する場合の便利な機能は、特定の日付以降に変更されたファイルをフィルタリングすることです。たとえば、日付の後に作成されたファイルを抽出するには、 --newer-mtime
を使用します オプションで日付を追加します:
tar xf <archive> --newer-mtime=YYYY-MM-DD
17。権限
アーカイブを抽出するときにtarを使用してファイルのアクセス許可を制御するには、次の2つの方法があります。
1.元の権限を保持する:
tar xf <archive name> --preserve-permissions
権限は、アーカイブを作成する前にファイルに記載されているとおりです。
2.権限をデフォルトのumask値に変更します:
tar xf <archive name> --no-same-permissions
ファイルはデフォルトのLinux権限を取得します。
18。ファイルの所有権
Tarを使用すると、ファイルの所有権を構成できます。たとえば、アーカイブの作成時にファイルの所有者を設定するには、 --owner
を追加します および--group
オプションとそれぞれの値を提供します:
tar cf <archive> <file(s) or location(s)> --owner=<value> --group=<value>
所有者の値はUIDを表します (ユーザーID)グループ値が GIDの場合 (グループID)。ユーザーのこれらの値を見つけるには、次を実行します。
id <username>
たとえば、アーカイブを作成し、所有権をrootに設定します。
tar cf files.tar files --owner=0 --group=0

Tarを使用すると、アーカイブから抽出するときに所有権を保持できます。これを行うには、 --same-owner
を追加します 最後のオプション:
tar xf <archive> --same-owner
19。外部プログラムへの書き込み
--to-command
オプションは、抽出された各ファイルを外部プログラムの標準出力に送信するようにtarに指示します。基本的な構文は次のとおりです。
tar xf <archive> --to-command='<command>'
たとえば、 files.tarを抽出します コンテンツとファイル名をディレクトリとしてパイプします:
tar xf files.tar --to-command='mkdir $TAR_FILENAME'

このコマンドは、抽出された各ファイルにちなんで名付けられたディレクトリを作成します。詳細および使用可能なLinux環境変数については、マニュアルページにアクセスしてください。
20。毎日のバックアップを作成する
毎日のバックアップを自動化するには、bashスクリプトを作成し、次の行を追加します。
tar czf backup-$(date +%Y%m%d).tar.gz files
find backup* -mtime +1 -delete
tarコマンドは圧縮アーカイブを作成しますが、findコマンドは1日より古いバックアップファイルを検索します。 +1
を変更します +7
へのパラメータ 毎週または+31
毎月のバックアップ用。