Tar

tar(ター)とは



tar(tape archives)は、複数のファイルを一つのファイルにまとめるためのファイルアーカイブ形式です。また、この形式を処理するUNIXコマンドの名前でもあります。UNIX環境では、圧縮されたtar形式のファイルを「tarball」(ターボール)と呼ぶことがあります。

tarはPOSIX.1-1988やPOSIX.1-2001で規格化されており、UNIX系のオペレーティングシステムでは標準的なフォーマットです。Windows環境では、Windows 10 Build 17063 (Version 1803)以降でコマンドラインツールが標準搭載され、Windows 11 Build 23493 (Version 22H2)以降ではFile Explorerで解凍に対応、さらにWindows 11 Build 25992 (Version 24H2)以降では圧縮にも対応しています。

機能



tarの主な機能は、複数のファイルを一つのアーカイブファイルにまとめることです。これにより、多数のファイルを効率的に管理・移動できます。tarは、ファイルのユーザ情報、グループ情報、パーミッション、最終更新日時、ディレクトリ構造などのメタデータを同時にアーカイブすることができます。

圧縮・伸長



tar自体にはファイルの圧縮機能は含まれていません。通常は、アーカイブと同時にcompress、gzip、bzip2などの圧縮プログラムを利用して圧縮を行います。これにより、ファイルの拡張子は`.tar.Z`、`.tar.gz`、`.tar.bz2`などとなり、それぞれ`.taZ`、`.tgz`、`.tbz2`と略されることもあります。特にgzipは古くから広く利用されています。

ただし、この形式では、ファイルの一部が破損した場合、その破損箇所以降のファイルは取り出すことができなくなります。これは、連続的にファイルが格納されているためです。

ヘッダー



tarファイルには、ファイルの属性などのメタデータが含まれています。以下は、UNIX tarフォーマットのヘッダーの一例です。

フィールド サイズ 説明
---------------
ファイル名 100byte ファイルの名前
モード 8byte パーミッションとファイルのタイプ
ユーザーID 8byte ファイルの所有者のユーザーID
グループID 8byte ファイルの所有者のグループID
サイズ 12byte ファイルのサイズ
最終変更タイム 12byte 最終変更日時
チェックサム 8byte ファイルの整合性を確認するためのチェックサム

ファイルタイプ 1byte ファイルのタイプ(ディレクトリ、通常ファイルなど)



コマンドオプション



以下は、GNU Tarおよびbsdtarで共通して利用できるオプションです。

`-c`: 新しいアーカイブを作成します。
`-r`: アーカイブにファイルを追加します。
`-t`: アーカイブの内容をリスト表示します。
`-u`: アーカイブ内のファイルよりも新しいファイルを追加します。
`-x`: アーカイブからファイルを取り出します。
`-f file`: テープの代わりに指定したファイルをアーカイブします。指定がない場合は環境変数`TAPE`に従います。
`-v`: 詳細なメッセージを表示します。
`-C directory`: 指定したディレクトリに移動してから操作を行います。
`--newer date`: 指定した日付よりも新しいファイルのみをアーカイブに含めます。
`-T file`: 指定したファイルに記述されたファイル名をアーカイブに追加します。ファイル内には改行区切りでファイル名が記述されています。


圧縮・伸長オプション



`-a`もしくは`--auto-compress`: 拡張子から圧縮プログラムを自動的に決定します。伸長時は自動的に決定されます。
compress: `.tar.Z`, `.taZ`
gzip: `.tar.gz`, `.tgz`, `.taz`
bzip2: `.tar.bz2`, `.tz2`, `.tbz2`, `.tbz`
xz: `.tar.xz`
lzip: `.tar.lz`
lzma: `.tar.lzma`, `.tlz`
lzop: `.tar.lzo`
Zstandard: `.tar.zst`, `.tzst`
`-Z`もしくは`--compress`: UNIX Compressで圧縮・伸長します。
`-z`もしくは`--gzip`: gzipで圧縮・伸長します。
`-j`もしくは`--bzip2`: bzip2で圧縮・伸長します。
`-J`もしくは`--xz`: xzで圧縮・伸長します。
`--lzma`: lzmaで圧縮・伸長します。
`--lzop`: lzopで圧縮・伸長します。
`--zstd`: Zstandardで圧縮・伸長します。

2022年12月現在、GNU Tar独自のオプションとして`lzip`が、bsdtar独自のオプションとして`lrzip`や`--lz4`があります。

圧縮レベルや並列圧縮を指定する場合は、GNU Tarでは `-I` オプションを使い、bsdtarでは `--options` オプションを使います。

コマンド例



以下は、tarコマンドの基本的な使用例です。

圧縮


bash
tar -cvf archive.tar directory


伸長


bash
tar -xvf archive.tar


テープデバイスへの記録


bash
tar -cvf /dev/st0 directory


テープデバイスからの読み出し


bash
tar -xvf /dev/st0


テープ上のファイルのリスト表示


bash
tar -tvf /dev/st0


歴史



tarコマンドは、その名前(Tape ARchive)が示すように、当初は磁気テープの操作を目的としていました。`f`オプションを省略した場合は、デフォルトで磁気テープデバイスを処理します。`f`オプションを指定することで、ファイルシステム上の任意のファイルを処理できます。

「tarball」という言葉は、「リーマスじいや」の童話『タールの赤ん坊』に由来するジョーク的な用語です。

tarの長い歴史の中で、システムごとに方言やファイルサイズ制限などの非互換性があるため、異なるシステム間でファイル交換を行う際には注意が必要です。近年ではGNU Tarとbsdtarが一般的ですが、他にも様々なtarが存在します。Windows 10以降やmacOSに搭載されているのはbsdtar、Linuxで一般的なのはGNU Tarです。BusyBoxにも独自のtarが含まれています。

関連項目



mt (UNIX)
テープドライブ
Linear Tape-Open
IBM 3592

外部リンク



GNU Tar
Tar - GNU Project
Man page of TAR
GNU tar format
bsdtar
libarchive
tar(1) - FreeBSD General Commands Manual
tar(5) - FreeBSD File Formats Manual

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。