この項目では、コンピュータのファイルフォーマットについて説明しています。その他のTAR については「TAR 」をご覧ください。
tar (ター、t ape ar chives)はファイルアーカイブ のファイルフォーマット の一種である。このファイルフォーマットを処理する同名のUNIX コマンドtar
も指す。UNIXでは圧縮したtar形式のファイルを"tarball"(ターボール)と呼ぶこともある。POSIX .1-1988[ 3] やPOSIX.1-2001 [ 4] で規格化され、UNIX系オペレーティングシステム では標準のフォーマットである。Windows では Windows 10 Build 17063 (Version 1803) 以降からコマンドラインツールが標準搭載されていて[ 5] 、File Explorer では Windows 11 Build 23493[ 6] (Version 22H2[ 7] ) 以降は解凍に対応していて、Windows 11 Build 25992[ 8] (Version 24H2[ 9] )以降は圧縮に対応している。
機能
tarはファイル のアーカイブ に用いられ、多数のファイルを一つのファイルにまとめることができる。ファイルのユーザ情報とグループ情報、パーミッション 、最終更新日時、ディレクトリ 構造などを同時にアーカイブすることができる。
圧縮・伸長
tarによって複数のファイルを1つにまとめ、gzipなどで圧縮する。
元来tarはアーカイブ、すなわち複数のファイルをまとめることのみで圧縮 の機能はない。大半の場合アーカイブと同時にcompress 、gzip 、bzip2 などの圧縮方法を用いて圧縮(いわゆるソリッド圧縮 )を行う。これによりファイルの拡張子 はそれぞれ .tar.Z
、.tar.gz
、.tar.bz2
となる。それぞれ略して .taZ
、.tgz
, .tbz2
とされることも多い。特に gzip は古くから良く使われている。
この形式はファイルが一部でも破損した場合、破損箇所に含まれていたファイル以降は取り出すことはできない。
ヘッダー
tarはファイルの属性などのいわゆるメタデータ も一緒に含んでいる。以下のテーブルにUNIX tarフォーマットの一例を示す:
Pre-POSIX.1-1988 (i.e. v7):
オフセット
サイズ
内容
0
100
ファイル名
100
8
ファイルモード
108
8
所有者 User ID
116
8
グループ User ID
124
12
ファイルサイズ(Byte)
136
12
最終更新時刻(UNIX時間 )
148
8
チェックサム
156
1
リンクインジケーター(通常ファイル、ハードリンク、シンボリックリンク)
157
100
リンクされたファイルの名前
コマンドオプション
以下は 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 アーカイブ作成時に拡張子から圧縮プログラムを自動的に決定する。解凍時は何も指定しなくても自動的に決まる。[ 10]
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
(ルールに一貫性がなく .tlz は lzip ではなく lzma になっている)
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 の場合は tar -cf name.tar.zst -I "zstd -19 -T0" directory のように指定する。aの代わりにIで指定する。
bsdtar の場合は tar -caf name.tar.zst --options=compression-level=19,threads=0 directory のように指定する。
コマンド例
以下は、圧縮・伸長のコマンド例である[ 11] 。
圧縮。
tar -caf name.tar.gz directory
伸長。
テープデバイス
テープデバイスに記録。
tar -cf /dev/nst0 directory
テープデバイスから読み出す。
テープ上のファイルのリストを表示。リスト表示したいアーカイブファイルの先頭にテープを移動させた後、以下を実行。
歴史
tarコマンドはTape ARchiveというその名の通り磁気テープ の操作が念頭に置かれていた。fオプション[ 12] を省いた場合デフォルト で磁気テープデバイスを処理する。fオプションの指定によりファイルシステム上の任意の名前のファイルを処理できる。
tarballという言葉の由来は「リーマスじいや (英語版 ) 」の童話『タールの赤ん坊 (英語版 ) 』に由来し[ 13] 、それに油塊(タールボール)を引っ掛けたジョーク的用語である。
その歴史の長さゆえにシステム毎の方言やファイルサイズの制限など多くの非互換部分がある為、異なるシステム間のファイル交換を目的とする場合は慎重に利用する必要がある。近年は GNU Tar と bsdtar が一般的ではあるが、その他、様々な tar が存在する。Windows 10 以降や macOS に搭載されているのは bsdtar であり、Linux で一般的なのは GNU Tar である。BusyBox にも独自の tar が含まれている。
関連項目
脚注
外部リンク
GNU Tar
bsdtar
アーカイブのみ 圧縮のみ アーカイブおよび圧縮 ソフトウェアパッケージ 文書パッケージ