Tar

tar（ター、tape archives）はファイルアーカイブのファイルフォーマットの一種である。このファイルフォーマットを処理する同名のUNIXコマンドtarも指す。UNIXでは圧縮したtar形式のファイルを"tarball"（ターボール）と呼ぶこともある。POSIX.1-1988やPOSIX.1-2001で規格化され、UNIX系オペレーティングシステムでは標準のフォーマットである。Windows では Windows 10 Build 17063 (Version 1803) 以降からコマンドラインツールが標準搭載されていて、Windows 11 Build 23493 (Version 22H2) 以降からは Windows Explorer が対応している。

機能
tarはファイルのアーカイブに用いられ、多数のファイルを一つのファイルにまとめることができる。ファイルのユーザ情報とグループ情報、パーミッション、最終更新日時、ディレクトリ構造などを同時にアーカイブすることができる。

圧縮・伸長 

元来tarはアーカイブ、すなわち複数のファイルをまとめることのみで圧縮の機能はない。大半の場合アーカイブと同時にcompress、gzip、bzip2などの圧縮方法を用いて圧縮（いわゆるソリッド圧縮）を行う。これによりファイルの拡張子はそれぞれ 、、 となる。それぞれ略して 、,  とされることも多い。特に gzip は古くから良く使われている。

この形式はファイルが一部でも破損した場合、破損箇所に含まれていたファイル以降は取り出すことはできない。

ヘッダー
tarはファイルの属性などのいわゆるメタデータも一緒に含んでいる。以下のテーブルにUNIX tarフォーマットの一例を示す：

Pre-POSIX.1-1988 (i.e. v7):

コマンドオプション 
以下は GNU Tar および bsdtar で共通で利用可能なオプションである。
-c　新しいアーカイブを作成する
-r　アーカイブにファイルを追加する
-t　アーカイブの内容をリスト表示する
-u　アーカイブ内より新しいファイルを追加する
-x　アーカイブからファイルを取り出す

-f file　テープの代わりに指定したファイルをアーカイブする。これが指定されていない場合は環境変数 TAPE に従う。それもない場合の挙動はOSやコンパイル時の指定依存。
-v　詳細メッセージを表示する
-C directory　directoryに移動してから操作を行う

--newer date　指定した日付よりも新しいファイルだけをアーカイブに入れる（取り出す）
-T file　fileの中に記載されているファイル名をアーカイブに入れる（取り出す）。fileの中身は改行区切りで1行1ファイル名。

圧縮・伸長オプション
-a もしくは --auto-compress　アーカイブ作成・展開時に、拡張子から圧縮・伸長プログラムを自動的に決定する
 compress は , 
 gzip は , , 
 bzip2 は , , , 
 xz は 
 lzip は 
 lzma は , （ルールに一貫性がなく .tlz は lzip ではなく lzma になっている）
 lzop は 
 Zstandard は  , 
-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 がある。

コマンド例 
以下は、圧縮・伸長のコマンド例である。

圧縮。
tar -caf name.tar.gz directory

伸長。
tar -xaf name.tar.gz

テープデバイス
テープデバイスに記録。
tar -cf /dev/nst0 directory

テープデバイスから読み出す。
tar -xf /dev/nst0

テープ上のファイルのリストを表示。リスト表示したいアーカイブファイルの先頭にテープを移動させた後、以下を実行。
tar -tf /dev/nst0

歴史 
tarコマンドはTape ARchiveというその名の通り磁気テープの操作が念頭に置かれていた。fオプションを省いた場合デフォルトで磁気テープデバイスを処理する。fオプションの指定によりファイルシステム上の任意の名前のファイルを処理できる。

tarballという言葉の由来は「」の童話『』に由来し、それに油塊（タールボール）を引っ掛けたジョーク的用語である。

その歴史の長さゆえにシステム毎の方言やファイルサイズの制限など多くの非互換部分がある為、異なるシステム間のファイル交換を目的とする場合は慎重に利用する必要がある。近年は 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

UNIXのソフトウェア
ファイルフォーマット