tar コマンド

テープアーカイブを操作し、アーカイブ形式でファイルの作成、抽出、一覧表示、または更新を行います。

概要

tar コマンドは、tarball として知られるアーカイブファイルの作成、管理、抽出を行います。配布やバックアップのためにファイルをまとめてパッケージ化するのによく使用され、ファイルのパーミッション、所有権、ディレクトリ構造を保持します。元々はテープアーカイブ(名前の由来)用に設計されましたが、現在は主にディスク上のファイルアーカイブに使用されています。

オプション

-c, --create

新しいアーカイブを作成します

$ tar -c -f archive.tar file1.txt file2.txt

-x, --extract

アーカイブからファイルを抽出します

$ tar -x -f archive.tar

-t, --list

アーカイブの内容を一覧表示します

$ tar -t -f archive.tar
file1.txt
file2.txt

-f, --file=ARCHIVE

アーカイブファイルまたはデバイス ARCHIVE を使用します(ほとんどの操作に必要)

$ tar -c -f backup.tar documents/

-v, --verbose

処理されたファイルを詳細に一覧表示します

$ tar -cvf archive.tar file1.txt file2.txt
file1.txt
file2.txt

-z, --gzip

アーカイブを gzip でフィルタリングします(.tar.gz ファイルの作成/抽出)

$ tar -czf archive.tar.gz directory/

-j, --bzip2

アーカイブを bzip2 でフィルタリングします(.tar.bz2 ファイルの作成/抽出)

$ tar -cjf archive.tar.bz2 directory/

-C, --directory=DIR

操作を実行する前にディレクトリ DIR に変更します

$ tar -xf archive.tar -C /tmp/extract/

--exclude=PATTERN

PATTERN に一致するファイルを除外します

$ tar -cf backup.tar --exclude="*.log" directory/

使用例

圧縮アーカイブの作成

$ tar -czf project-backup.tar.gz project/

圧縮アーカイブの抽出

$ tar -xzf project-backup.tar.gz

圧縮アーカイブの内容一覧表示

$ tar -tzf project-backup.tar.gz
project/
project/file1.txt
project/file2.txt
project/subdirectory/
project/subdirectory/file3.txt

アーカイブから特定のファイルを抽出

$ tar -xf archive.tar file1.txt

詳細出力付きでアーカイブを作成

$ tar -cvf documents.tar Documents/
Documents/
Documents/report.pdf
Documents/presentation.pptx
Documents/notes.txt

ヒント:

オプションを簡潔に組み合わせる

ハイフンなしでオプションを組み合わせることができます。例えば tar -c -z -f の代わりに tar czf のように使えます。これは経験豊富なユーザーがよく使う省略形です。

パーミッションと所有権を保持する

デフォルトでは、tar はファイルのパーミッションと所有権を保持します。root として抽出する場合は、制限されたパーミッションでファイルが作成される可能性があるため注意してください。

大きなアーカイブには進行状況インジケーターを使用する

大きなアーカイブの場合、--checkpoint=1000 --checkpoint-action=dot を追加して操作中に進行状況のドットを表示します。

アーカイブの整合性を確認する

tar -tf archive.tar を使用して、アーカイブの内容を抽出せずに確認できます。これはアーカイブが破損していないことを確認するのに役立ちます。

抽出時に圧縮タイプを覚えておく

アーカイブを作成したときと同じ圧縮オプションを抽出時に指定する必要があります(例:gzip には -z、bzip2 には -j)。

よくある質問

Q1. .tar、.tar.gz、.tar.bz2 の違いは何ですか?

A. .tar は非圧縮アーカイブ、.tar.gz は gzip で圧縮(速いが圧縮率は低い)、.tar.bz2 は bzip2 で圧縮(遅いが圧縮率は高い)です。

Q2. tar アーカイブから単一のファイルを抽出するにはどうすればよいですか?

A. tar -xf archive.tar path/to/specific/file を使用して、そのファイルだけを抽出します。

Q3. 抽出せずに tar ファイルの中身を確認するにはどうすればよいですか?

A. tar -tf archive.tar を使用して、抽出せずにすべてのファイルを一覧表示します。

Q4. 特定のファイルを除外した tar アーカイブを作成するにはどうすればよいですか?

A. --exclude オプションを使用します:tar -cf archive.tar directory/ --exclude="*.tmp"

Q5. 既存の tar アーカイブ内のファイルを更新するにはどうすればよいですか?

A. -u または --update オプションを使用します:tar -uf archive.tar newfile.txt

参考文献

https://www.gnu.org/software/tar/manual/tar.html

改訂履歴