この項目では、コンピュータのファイルフォーマットについて説明しています。その他のTARについては「TAR」をご覧ください。
Tar
拡張子.tar
MIMEタイプapplication/x-tar
タイプコード
GNU Tar開発元GNUプロジェクト
最新版1.35 / 2023年7月18日 (10か月前) (2023-07-18)[1]
リポジトリgit.savannah.gnu.org/cgit/tar.git
プログラミング
言語C言語
ライセンスGNU GPL v3 以降
公式サイトwww.gnu.org/software/tar/
テンプレートを表示
libarchive (bsdtar)
最新版3.7.3 / 2024年4月8日 (40日前) (2024-04-08)[2]
リポジトリgithub.com/libarchive/libarchive
プログラミング
言語C言語
ライセンスNew BSD License
公式サイトwww.libarchive.org
テンプレートを表示
tar(ター、tape archives)はファイルアーカイブのファイルフォーマットの一種である。このファイルフォーマットを処理する同名の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] 以降は圧縮に対応している。 tarはファイルのアーカイブに用いられ、多数のファイルを一つのファイルにまとめることができる。ファイルのユーザ情報とグループ情報、パーミッション、最終更新日時、ディレクトリ構造などを同時にアーカイブすることができる。 元来tarはアーカイブ、すなわち複数のファイルをまとめることのみで圧縮の機能はない。大半の場合アーカイブと同時にcompress、gzip、bzip2などの圧縮方法を用いて圧縮(いわゆるソリッド圧縮)を行う。これによりファイルの拡張子はそれぞれ .tar.Z、.tar.gz、.tar.bz2 となる。それぞれ略して .taZ、.tgz, .tbz2 とされることも多い。特に gzip は古くから良く使われている。 この形式はファイルが一部でも破損した場合、破損箇所に含まれていたファイル以降は取り出すことはできない。 tarはファイルの属性などのいわゆるメタデータも一緒に含んでいる。以下のテーブルにUNIX tarフォーマットの一例を示す: Pre-POSIX.1-1988 (i.e. v7): オフセットサイズ内容 以下は GNU Tar および bsdtar で共通で利用可能なオプションである。 2022年12月現在、GNU Tar 独自の物として --lzip があり、bsdtar 独自の物としては --lrzip や --lz4 がある。 圧縮レベルや並列圧縮を指定する方法は、 以下は、圧縮・伸長のコマンド例である[10]。 圧縮。tar -caf name.tar.gz directory 伸長。tar -xf name.tar.gz テープデバイスに記録。tar -cf /dev/nst0 directory テープデバイスから読み出す。tar -xf /dev/nst0 テープ上のファイルのリストを表示。リスト表示したいアーカイブファイルの先頭にテープを移動させた後、以下を実行。tar -tf /dev/nst0 tarコマンドはTape ARchiveというその名の通り磁気テープの操作が念頭に置かれていた。fオプション[11]を省いた場合デフォルトで磁気テープデバイスを処理する。fオプションの指定によりファイルシステム上の任意の名前のファイルを処理できる。 tarballという言葉の由来は「リーマスじいや その歴史の長さゆえにシステム毎の方言やファイルサイズの制限など多くの非互換部分がある為、異なるシステム間のファイル交換を目的とする場合は慎重に利用する必要がある。近年は GNU Tar と bsdtar が一般的ではあるが、その他、様々な tar が存在する。Windows 10 以降や macOS に搭載されているのは bsdtar であり、Linux で一般的なのは GNU Tar である。BusyBox にも独自の tar が含まれている。
機能
圧縮・伸長tarによって複数のファイルを1つにまとめ、gzipなどで圧縮する。
ヘッダー
0100ファイル名
1008ファイルモード
1088所有者 User ID
1168グループ User ID
12412ファイルサイズ(Byte)
13612最終更新時刻(UNIX時間)
1488チェックサム
1561リンクインジケーター(通常ファイル、ハードリンク、シンボリックリンク)
157100リンクされたファイルの名前
コマンドオプション
-c 新しいアーカイブを作成する
-r アーカイブにファイルを追加する
-t アーカイブの内容をリスト表示する
-u アーカイブ内より新しいファイルを追加する
-x アーカイブからファイルを取り出す
-f file テープの代わりに指定したファイルをアーカイブする。これが指定されていない場合は環境変数 TAPE に従う。それもない場合の挙動はOSやコンパイル時の指定依存。
-v 詳細メッセージを表示する
-C directory directoryに移動してから操作を行う
--newer date 指定した日付よりも新しいファイルだけをアーカイブに入れる(取り出す)
-T file fileの中に記載されているファイル名をアーカイブに入れる(取り出す)。fileの中身は改行区切りで1行1ファイル名。
圧縮・伸長オプション
-a もしくは --auto-compress アーカイブ作成時に拡張子から圧縮プログラムを自動的に決定する。解凍時は何も指定しなくても自動的に決まる。[9]
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で圧縮・伸長する
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 のように指定する。
コマンド例
テープデバイス
歴史
関連項目
mt (UNIX)
テープドライブ
Linear Tape-Open
IBM 3592
脚注[脚注の使い方]^ “NEWS
^ libarchive/NEWS at master ・ libarchive/libarchive - GitHub
^ "IEEE Std 1003.1-1988, IEEE Standard for Information Technology - Portable Operating System Interface (POSIX)"
^ "IEEE Std 1003.1-2001, IEEE Standard for Information Technology - Portable Operating System Interface (POSIX)"
^ Tar and Curl Come to Windows! 。Microsoft Learn