COMMAND REFERENCE / 日本語訳
tar(1)
Apple / macos 26.6.2SECTION 1英語の原文 ↗
版情報
- バリエーション
- 25g83
- 原文形式
- roff
- 原文 SHA-256
e7e0f61433da7fd2002d1c8b9dadb7bf497302eede7b488828d136b4a117a553- 翻訳
- LLM による日本語訳
tar — テープアーカイブを操作する
| [bundled-flags ⟨args⟩] [⟨file⟩ | ⟨pattern⟩ ...] |
| { |
| { |
| { |
tar はストリーミングアーカイブファイルを作成および操作します。この実装は tar、pax、cpio、zip、jar、ar、xar、rpm、7-zip、および ISO 9660 CD-ROM イメージから展開でき、tar、pax、cpio、ar、zip、7-zip、および shar アーカイブを作成できます。
最初の書式は「まとめ書き」オプション語を示します。この用法は、歴史的な実装との互換性のために提供されています。詳細は後述の互換性を参照してください。
ほかの書式は推奨される用法を示します。tar の最初のオプションは、次の一覧からのモード指示子です。
-c指定された項目を含む新しいアーカイブを作成します。長い形式は
--createです。-r-cと同様ですが、新しいエントリはアーカイブに追記されます。これは非圧縮のアーカイブが通常ファイルに格納されている場合にのみ動作することに注意してください。-fオプションが必要です。長い形式は--appendです。-tアーカイブの内容を標準出力に一覧表示します。長い形式は
--listです。-u-rと同様ですが、新しいエントリは、アーカイブ内の対応するエントリより新しい更新日時を持つ場合にのみ追加されます。これは非圧縮のアーカイブが通常ファイルに格納されている場合にのみ動作することに注意してください。-fオプションが必要です。長い形式は--updateです。-xアーカイブからディスクへ展開します。同じ名前のファイルがアーカイブ内に複数回現れる場合、各コピーが展開され、後のコピーが先のコピーを上書き(置換)します。長い形式は
--extractです。
-c、-r、または -u モードでは、指定された各ファイルまたはディレクトリが、コマンドラインで指定された順にアーカイブへ追加されます。既定では、各ディレクトリの内容もアーカイブされます。
展開または一覧モードでは、アーカイブを開く前にコマンドライン全体が読み取られ、解析されます。コマンドライン上のパス名またはパターンは、アーカイブ内のどの項目を処理するかを示します。パターンは tcsh(1) に記載されているシェル形式のグロブパターンです。
特に明記しない限り、オプションはすべての動作モードで適用されます。
@archive(c および r モードのみ)指定されたアーカイブを開き、その中のエントリを現在のアーカイブに追記します。簡単な例として、
tar -c -f - newfile @original.tarは、ファイル newfile と original.tar のすべてのエントリを含む新しいアーカイブを標準出力へ書き出します。対照的に、
tar -c -f - newfile original.tarは、エントリが 2 つだけの新しいアーカイブを作成します。同様に、
tar -czf - --format pax @-は標準入力からアーカイブを読み(形式は自動判定されます)、gzip 圧縮された pax 形式のアーカイブとして標準出力へ変換します。このように、
tarを使ってアーカイブをある形式から別の形式へ変換できます。-a、--auto-compress(c モードのみ)アーカイブの接尾辞から、形式と圧縮の組み合わせを決めます。簡単な例として、
tar -a -cf archive.tgz source.c source.hは、restricted pax 形式と gzip 圧縮の新しいアーカイブを作成し、
tar -a -cf archive.tar.bz2.uu source.c source.hは、restricted pax 形式と bzip2 圧縮および uuencode 圧縮の新しいアーカイブを作成し、
tar -a -cf archive.zip source.c source.hは zip 形式の新しいアーカイブを作成し、
tar -a -jcf archive.tgz source.c source.hは「
-j」オプションを無視し、restricted pax 形式と gzip 圧縮の新しいアーカイブを作成し、tar -a -jcf archive.xxx source.c source.h未知の接尾辞または接尾辞がない場合は、restricted pax 形式と bzip2 圧縮の新しいアーカイブを作成します。
--acls(c、r、u、x モードのみ)POSIX.1e または NFSv4 ACL をアーカイブまたは展開します。これは
--no-aclsの逆であり、c、r、および u モード(Mac OS X を除く)、またはtarを x モードで root として実行した場合の既定の動作です。Mac OS X では、このオプションは拡張 ACL を NFSv4 ACL に変換します。拡張 ACL を格納するには--mac-metadataオプションが推奨されます。-B、--read-full-blocksほかの
tar(1)実装との互換性のために無視されます。-bblocksize、--block-sizeblocksizeテープドライブ I/O のブロックサイズを、512 バイトレコード単位で指定します。原則として、この引数が必要になるのはテープドライブからの読み取りまたは書き込みのときだけで、その場合でも、既定のブロックサイズである 20 レコード(10240 バイト)が非常に一般的なため、通常は不要です。
-Cdirectory、--cddirectory、--directorydirectoryc および r モードでは、続くファイルを追加する前にディレクトリを変更します。x モードでは、アーカイブを開いたあと、アーカイブからエントリを展開する前にディレクトリを変更します。
--chroot(x モードのみ)
-Cオプションを処理したあと、ファイルを展開する前に、現在のディレクトリへchroot() します。--clear-nochange-fflags(x モードのみ)置き換えるためにファイルシステムオブジェクトを削除する前に、削除を妨げる可能性のあるプラットフォーム固有のファイル属性またはファイルフラグをクリアします。
--excludepattern指定されたパターンに一致するファイルまたはディレクトリを処理しません。除外は、コマンドラインで指定されたパターンまたはファイル名より優先されることに注意してください。
--exclude-vcsバージョン管理システム ‘Arch’、‘Bazaar’、‘CVS’、‘Darcs’、‘Mercurial’、‘RCS’、‘SCCS’、‘SVN’、および ‘git’ が内部的に使うファイルまたはディレクトリを処理しません。
--fflags(c、r、u、x モードのみ)プラットフォーム固有のファイル属性またはファイルフラグをアーカイブまたは展開します。これは
--no-fflagsの逆であり、c、r、および u モード、またはtarを x モードで root として実行した場合の既定の動作です。--formatformat(c、r、u モードのみ)作成するアーカイブに指定された形式を使います。対応する形式には “cpio”、“pax”、“shar”、および “ustar” が含まれます。ほかの形式にも対応している場合があります。現在対応している形式の詳細は
libarchive-formats(5)を参照してください。r および u モードで既存のアーカイブを延長する場合、ここで指定する形式は、ディスク上の既存アーカイブの形式と互換でなければなりません。-ffile、--filefile指定されたファイルからアーカイブを読み取るか、指定されたファイルへアーカイブを書き込みます。ファイル名に - を指定すると、標準入力または標準出力になります。既定はシステムによって異なります。FreeBSD では既定は /dev/sa0、Linux では既定は /dev/st0 です。
--gidid指定されたグループ ID 番号を使います。展開時は、アーカイブ内のグループ ID を上書きし、アーカイブ内のグループ名は無視されます。作成時は、ディスクから読み取ったグループ ID を上書きします。
--gnameも指定しない場合、グループ名はグループ ID に合わせて設定されます。--gnamename指定されたグループ名を使います。展開時は、アーカイブ内のグループ名を上書きします。指定されたグループ名がシステムに存在しない場合は、代わりにグループ ID(アーカイブまたは
--gidオプションから)が使われます。作成時は、アーカイブに格納するグループ名を設定します。名前はシステムのグループデータベースと照合されません。--groupname[:gid]指定されたグループを使います。gid が指定されない場合、name はグループ名または数値 ID のいずれかです。詳細は
--gnameオプションを参照してください。-H(c および r モードのみ)コマンドラインで指定されたシンボリックリンクをたどります。リンク自体ではなく、リンクの対象がアーカイブされます。
-h(c および r モードのみ)
-Lの同義語です。-I-Tの同義語です。--help使用法を表示します。
--hfsCompression(x モードのみ)Mac OS X 固有(v10.6 以降)。展開した通常ファイルを HFS+ 圧縮で圧縮します。
--ignore-zerosGNU tar との互換性のための、
--optionsread_concatenated_archivesの別名です。--includepattern指定されたパターンに一致するファイルまたはディレクトリだけを処理します。
--excludeで指定した除外は包含より優先されることに注意してください。包含を明示的に指定しない場合、既定ですべてのエントリが処理されます。--includeオプションは、アーカイブをフィルタするときに特に便利です。たとえば、次のコマンドはtar -c -f new.tar --include='*foo*' @old.tgz文字列 ‘foo’ を含む old.tgz のエントリだけを含む新しいアーカイブ new.tar を作成します。
-J、--xz(c モードのみ)結果のアーカイブを
xz(1)で圧縮します。展開または一覧モードでは、このオプションは無視されます。このtar実装は、アーカイブを読むときに XZ 圧縮を自動認識することに注意してください。-j、--bzip、--bzip2、--bunzip2(c モードのみ)結果のアーカイブを
bzip2(1)で圧縮します。展開または一覧モードでは、このオプションは無視されます。このtar実装は、アーカイブを読むときに bzip2 圧縮を自動認識することに注意してください。-k、--keep-old-files(x モードのみ)既存のファイルを上書きしません。特に、ファイルがアーカイブ内に複数回現れる場合、後のコピーは先のコピーを上書きしません。
--keep-newer-files(x モードのみ)展開中のアーカイブに現れる版より新しい既存ファイルは上書きしません。
-L、--dereference(c および r モードのみ)すべてのシンボリックリンクをたどります。通常、シンボリックリンクはそのままアーカイブされます。このオプションでは、代わりにリンクの対象がアーカイブされます。
-l、--check-links(c および r モードのみ)各ファイルへのリンクがすべてアーカイブされない限り、警告メッセージを出します。
--lrzip(c モードのみ)結果のアーカイブを
lrzip(1)で圧縮します。展開または一覧モードでは、このオプションは無視されます。このtar実装は、アーカイブを読むときに lrzip 圧縮を自動認識することに注意してください。--lz4(c モードのみ)書き出す前に、アーカイブを lz4 互換圧縮で圧縮します。展開または一覧モードでは、このオプションは無視されます。この
tar実装は、アーカイブを読むときに lz4 圧縮を自動認識することに注意してください。--zstd(c モードのみ)書き出す前に、アーカイブを zstd 互換圧縮で圧縮します。展開または一覧モードでは、このオプションは無視されます。この
tar実装は、アーカイブを読むときに zstd 圧縮を自動認識することに注意してください。--lzma(c モードのみ)結果のアーカイブを元の LZMA アルゴリズムで圧縮します。展開または一覧モードでは、このオプションは無視されます。このオプションの使用は推奨されず、新しいアーカイブは代わりに
--xzで作成すべきです。このtar実装は、アーカイブを読むときに LZMA 圧縮を自動認識することに注意してください。--lzop(c モードのみ)結果のアーカイブを
lzop(1)で圧縮します。展開または一覧モードでは、このオプションは無視されます。このtar実装は、アーカイブを読むときに LZO 圧縮を自動認識することに注意してください。-m、--modification-time(x モードのみ)更新日時を展開しません。既定では、更新日時はアーカイブに格納された時刻に設定されます。
--mac-metadata(c、r、u、および x モードのみ)Mac OS X 固有。拡張 ACL および拡張ファイル属性を、AppleDouble 形式の
copyfile(3)を使ってアーカイブまたは展開します。これは--no-mac-metadataの逆です。また、c、r、および u モード、またはtarを x モードで root として実行した場合の既定の動作です。現在は pax 形式("pax restricted"、bsdtar の既定の tar 形式を含む)でのみ対応しています。-n、--norecurse、--no-recursionディレクトリの内容に対して再帰的に操作しません。
--newerdate(c、r、u モードのみ)指定された日付より新しいファイルおよびディレクトリだけを含めます。ctime エントリを比較します。
--newer-mtimedate(c、r、u モードのみ)
--newerと同様ですが、ctime エントリではなく mtime エントリを比較します。--newer-thanfile(c、r、u モードのみ)指定されたファイルより新しいファイルおよびディレクトリだけを含めます。ctime エントリを比較します。
--newer-mtime-thanfile(c、r、u モードのみ)
--newer-thanと同様ですが、ctime エントリではなく mtime エントリを比較します。--nodump(c および r モードのみ)nodump ファイルフラグを尊重し、このファイルをスキップします。
--nopreserveHFSCompression(x モードのみ)Mac OS X 固有(v10.6 以降)。アーカイブ前に HFS+ 圧縮されていた展開後の通常ファイルを圧縮しません。既定では、通常ファイルを再び HFS+ 圧縮で圧縮します。
--null(
-Iまたは-Tと併用)ファイル名またはパターンは、改行ではなくヌル文字で区切られます。これは、find(1)の-print0オプションが出力するファイル名を読むときにしばしば使われます。--no-acls(c、r、u、x モードのみ)POSIX.1e または NFSv4 ACL をアーカイブまたは展開しません。これは
--aclsの逆であり、tarを非 root で x モード実行した場合の既定の動作です(Mac OS X では c、r、u、および x モードの任意のユーザー)。--no-fflags(c、r、u、x モードのみ)ファイル属性またはファイルフラグをアーカイブまたは展開しません。これは
--fflagsの逆であり、tarを非 root で x モード実行した場合の既定の動作です。--no-mac-metadata(x モードのみ)Mac OS X 固有。ACL および拡張ファイル属性を、AppleDouble 形式の
copyfile(3)を使ってアーカイブまたは展開しません。これは--mac-metadataの逆です。また、tarを非 root で x モード実行した場合の既定の動作です。--no-read-sparse(c、r、u モードのみ)ディスクからスパースファイル情報を読みません。これは
--read-sparseの逆です。--no-safe-writes(x モードのみ)一時ファイルを作成して
rename(2)で元のファイルを置き換えません。これは--safe-writesの逆です。--no-same-owner(x モードのみ)所有者およびグループ ID を展開しません。これは
--same-ownerの逆であり、tarを非 root で実行した場合の既定の動作です。--no-same-permissions(x モードのみ)完全な権限(SGID、SUID、スティッキービット、ファイル属性またはファイルフラグ、拡張ファイル属性および ACL)を展開しません。これは
-pの逆であり、tarを非 root で実行した場合の既定の動作です。--no-xattrs(c、r、u、x モードのみ)拡張ファイル属性をアーカイブまたは展開しません。これは
--xattrsの逆であり、tarを非 root で x モード実行した場合の既定の動作です。--numeric-ownerこれは
--uname""--gname"" と同等です。展開時は、アーカイブ内のユーザー名およびグループ名を無視し、数値のユーザー ID およびグループ ID を使います。作成時は、ユーザー名およびグループ名をアーカイブに格納しません。-O、--to-stdout(x、t モードのみ)展開(
-x)モードでは、ファイルはディスクへ展開されず標準出力へ書き出されます。一覧(-t)モードでは、ファイル一覧は通常の標準出力ではなく標準エラー出力へ書き出されます。-o(x モード)アーカイブで指定されたものではなく、プログラムを実行しているユーザーのユーザーおよびグループを使います。これは
-pが指定され、かつプログラムが root ユーザーによって実行されている場合にのみ意味を持つことに注意してください。この場合、アーカイブのファイルモードおよびフラグは復元されますが、アーカイブ内の ACL または所有者情報は破棄されます。-o(c、r、u モード)
--formatustar の同義語です--olderdate(c、r、u モードのみ)指定された日付より古いファイルおよびディレクトリだけを含めます。ctime エントリを比較します。
--older-mtimedate(c、r、u モードのみ)
--olderと同様ですが、ctime エントリではなく mtime エントリを比較します。--older-thanfile(c、r、u モードのみ)指定されたファイルより古いファイルおよびディレクトリだけを含めます。ctime エントリを比較します。
--older-mtime-thanfile(c、r、u モードのみ)
--older-thanと同様ですが、ctime エントリではなく mtime エントリを比較します。--one-file-system(c、r、および u モード)マウントポイントを越えません。
--optionsoptions特定のモジュールの省略可能な動作を選択します。引数は、カンマ区切りのキーワードと値を含むテキスト文字列です。これらは特定の形式を扱うモジュールへ渡され、それらの形式の振る舞いを制御します。各オプションは次のいずれかの形式を持ちます。
- key=value
そのキーを対応するすべてのモジュールで、指定された値に設定します。このキーに対応していないモジュールは無視します。
- key
そのキーを対応するすべてのモジュールで有効にします。これは key
=1と同等です。- !key
そのキーを対応するすべてのモジュールで無効にします。
- module:key=value、module:key、module:!key
上記と同様ですが、対応するキーと値は、名前が module に一致するモジュールにだけ渡されます。
作成および追記モードで対応しているモジュールとキーの完全な一覧は
archive_write_set_options(3)に、展開および一覧モードについてはarchive_read_set_options(3)にあります。対応しているオプションの例:
iso9660:jolietJoliet 拡張をサポートします。これは既定で有効です。無効にするには
!jolietまたはiso9660:!jolietを使います。iso9660:rockridgeRock Ridge 拡張をサポートします。これは既定で有効です。無効にするには
!rockridgeまたはiso9660:!rockridgeを使います。gzip:compression-levelgzip 圧縮レベルを指定する 1 から 9 の十進整数。
gzip:timestampタイムスタンプを格納します。これは既定で有効です。無効にするには
!timestampまたはgzip:!timestampを使います。lrzip:compression=type圧縮方式として type を使います。対応する値は bzip2、gzip、lzo(超高速)、および zpaq(最良、極めて低速)です。
lrzip:compression-levellrzip 圧縮レベルを指定する 1 から 9 の十進整数。
lz4:compression-levellzop 圧縮レベルを指定する 1 から 9 の十進整数。
lz4:stream-checksumストリームチェックサムを有効にします。これが既定です。無効にするには
lz4:!stream-checksumを使います。lz4:block-checksumブロックチェックサムを有効にします(既定では無効)。
lz4:block-sizelz4 圧縮ブロックサイズを指定する 4 から 7 の十進整数(既定は 7)。
lz4:block-dependence圧縮中のブロックの直前のブロックを圧縮辞書として使い、圧縮率を向上させます。
zstd:compression-level=Nzstd 圧縮レベルを指定する十進整数。対応する値はライブラリの版に依存し、よく使われる値は 1 から 22 です。
zstd:threads=N使用するワーカースレッド数を指定します。0 を指定すると、システムの CPU コア数と同じ数のスレッドを使います。
zstd:frame-per-fileアーカイブ内の各ファイルの先頭で新しい圧縮フレームを開始します。
zstd:min-frame-in=Nzstd:frame-per-fileと組み合わせて、現在のフレームの非圧縮サイズが少なくとも N バイトになるまで、新しい圧縮フレームを開始しません。数値の後にk /kB、M /MB、またはG /GBを付けて、それぞれキロバイト、メガバイト、ギガバイトを示すことができます。zstd:min-frame-out=N、zstd:min-frame-size=Nzstd:frame-per-fileと組み合わせて、現在のフレームの圧縮サイズが少なくとも N バイトになるまで、新しい圧縮フレームを開始しません。数値の後にk /kB、M /MB、またはG /GBを付けて、それぞれキロバイト、メガバイト、ギガバイトを示すことができます。zstd:max-frame-in=N、zstd:max-frame-size=N現在のフレームの非圧縮サイズが N バイトを超えたら、できるだけ早く新しい圧縮フレームを開始します。数値の後に
k /kB、M /MB、またはG /GBを付けて、それぞれキロバイト、メガバイト、ギガバイトを示すことができます。1,024 未満の値は拒否されます。zstd:max-frame-out=N現在のフレームの圧縮サイズが N バイトを超えたら、できるだけ早く新しい圧縮フレームを開始します。数値の後に
k /kB、M /MB、またはG /GBを付けて、それぞれキロバイト、メガバイト、ギガバイトを示すことができます。1,024 未満の値は拒否されます。lzop:compression-levellzop 圧縮レベルを指定する 1 から 9 の十進整数。
xz:compression-levelxz 圧縮レベルを指定する 0 から 9 の十進整数。
xz:threads使用するワーカースレッド数を指定します。スレッド数を特別な値 0 に設定すると、
xz(1)はシステムの CPU コア数と同じ数のスレッドを使います。mtree:keywordmtree 書き込みモジュールでは、出力に含める mtree キーワードを指定できます。対応するキーワードには次が含まれます。
cksum、device、flags、gid、gname、indent、link、md5、mode、nlink、rmd160、sha1、sha256、sha384、sha512、size、time、uid、uname。既定は “device, flags, gid, gname, link, mode, nlink, size, time, type, uid, uname” と同等です。mtree:all上記のキーワードをすべて有効にします。すべてのキーワードを無効にするには
mtree:!allも使えます。mtree:use-set出力に
/set行の生成を有効にします。mtree:indentオプションをインデントし、行を 80 桁に収まるよう分割して、人が読みやすい出力を生成します。
zip:compression=type圧縮方式として type を使います。対応する値は store(非圧縮)および deflate(gzip アルゴリズム)です。
zip:encryption従来の zip 暗号化を使った暗号化を有効にします。
zip:encryption=type暗号化の種類として type を使います。対応する値は zipcrypt(従来の zip 暗号化)、aes128(WinZip AES-128 暗号化)、および aes256(WinZip AES-256 暗号化)です。
read_concatenated_archivesアーカイブ内のゼロ埋めブロックを無視します。これは複数の tar アーカイブが連結されているときに発生します。このオプションがないと、連結された最初のアーカイブの内容だけが読まれます。このオプションは GNU tar の
-i、--ignore-zerosオプションに相当します。
指定されたオプションがどのモジュールにも対応していない場合、それは致命的エラーです。
-P、--absolute-pathsパス名を保持します。既定では、絶対パス名(/ 文字で始まるもの)は、アーカイブ作成時と展開時の両方で先頭のスラッシュが取り除かれます。また、
tarは、パス名に .. を含むアーカイブエントリ、または対象ディレクトリがシンボリックリンクによって変更されるエントリの展開を拒否します。このオプションはこれらの動作を抑制します。-p、--insecure、--preserve-permissions(x モードのみ)ファイル権限を保持します。アーカイブから展開する各項目について、利用可能であれば、ファイルモード、ファイル属性またはファイルフラグ、拡張ファイル属性および ACL を含む完全な権限の復元を試みます。これは
--no-same-permissionsの逆であり、tarを root として実行している場合の既定です。--no-acls、--no-fflags、--no-mac-metadata、または--no-xattrsを合わせて指定すると、部分的に上書きできます。--passphrasepassphraseパスフレーズは、暗号化されたアーカイブの展開または作成に使われます。現在、暗号化に対応している形式は zip だけです。このオプションの使用がどれほど安全でないかを理解していない限り、このオプションを使うべきではありません。
--posix(c、r、u モードのみ)
--formatpax の同義語です-q、--fast-read(x および t モードのみ)各パターンまたはファイル名オペランドに一致する最初のアーカイブエントリだけを展開または一覧します。指定された各パターンまたはファイル名が一致したらすぐに終了します。既定では、同じ名前のエントリが複数あり得て、慣例として後のエントリが先のエントリを上書きするため、アーカイブは常に最後まで読まれます。このオプションは性能最適化として提供されています。
--read-sparse(c、r、u モードのみ)ディスクからスパースファイル情報を読みます。これは
--no-read-sparseの逆であり、既定の動作です。-S(x モードのみ)ファイルをスパースファイルとして展開します。ディスク上の各ブロックについて、まず NULL バイトだけを含むかどうかを調べ、そうでなければシークして飛ばします。これは dd の conv=sparse オプションと同様に動作します。
-spatternpattern に従って、ファイル名またはアーカイブメンバ名を変更します。pattern の形式は /old/new/[bghHprRsS] です。ここで old は基本正規表現、new は一致した部分の置換文字列、末尾の省略可能な文字は置換の扱いを変更します。old に一致しない場合、その pattern はスキップされます。new の中では、~ が一致部分に、\1 から \9 が対応するキャプチャグループの内容に置換されます。末尾の省略可能な g は、一致した部分の後も照合を続け、最初に一致しなかった pattern で止めることを指定します。末尾の省略可能な s は、pattern をシンボリックリンクの値に適用することを指定します。末尾の省略可能な p は、置換が成功したあと、元のパス名と新しいパス名を標準エラー出力に表示することを指定します。末尾の省略可能な b は、直前の一致置換が終わった位置の直後からではなく、文字列の先頭から置換を照合することを指定します。末尾の省略可能な H、R、または S は、それぞれハードリンクの対象、通常のファイル名、シンボリックリンクの対象に対する置換を抑制します。末尾の省略可能な h、r、または s は、それぞれハードリンクの対象、通常のファイル名、シンボリックリンクの対象に対する置換を有効にします。既定は hrs であり、すべての名前に置換を適用します。特に、h、r、または s を指定する必要は決してありません。
--safe-writes(x モードのみ)ファイルを原子的に展開します。既定では
tarは、展開するファイルと同じ名前の元のファイル(存在する場合)を unlink し、すぐに同じ名前で作成して書き込みます。短い時間、そのファイルへアクセスしようとするアプリケーションは、ファイルを見つけられないか、不完全な結果を見る可能性があります。--safe-writesが有効な場合、tarはまず一意な一時ファイルを作成し、新しい内容を一時ファイルへ書き込み、最後にrename(2)を使って一時ファイルを最終名へ原子的にリネームします。これにより、ファイルへアクセスするアプリケーションは、常に古い内容か新しい内容のいずれかを見ることが保証されます。--same-owner(x モードのみ)所有者およびグループ ID を展開します。これは
--no-same-ownerの逆であり、tarを root として実行した場合の既定の動作です。--strip-componentscount先頭のパス要素を指定した数だけ取り除きます。要素数がそれより少ないパス名は、黙ってスキップされます。パス名の編集は、包含/除外パターンの検査の後、セキュリティ検査の前に行われることに注意してください。
-Tfilename、--files-fromfilenamex または t モードでは、
tarは展開する名前の一覧を filename から読みます。c モードでは、tarはアーカイブする名前を filename から読みます。行にそれだけ書かれた特別な名前「-C」は、現在のディレクトリを次の行で指定されたディレクトリへ変更します。--nullが指定されない限り、名前は改行で終端されます。--nullは「-C」を含む行の特別な扱いも無効にすることに注意してください。注意:find(1)を使ってファイル一覧を生成している場合は、-nも使いたくなるでしょう。--totals(c、r、u モードのみ)すべてのファイルをアーカイブしたあと、要約を標準エラー出力に表示します。
-U、--unlink、--unlink-first(x モードのみ)ファイルを作成する前に unlink します。ほとんどのファイルがすでに存在する場合はわずかな性能最適化になり得ますが、ほとんどのファイルがまだ存在しない場合は遅くなり得ます。このフラグは、
tarに対し、エラーを報告する代わりに途中のディレクトリシンボリックリンクを削除させます。詳細は後述のセキュリティの節を参照してください。--uidid指定されたユーザー ID 番号を使い、アーカイブのユーザー名を無視します。作成時、
--unameも指定しない場合、ユーザー名はユーザー ID に合わせて設定されます。--unamename指定されたユーザー名を使います。展開時は、アーカイブ内のユーザー名を上書きします。指定されたユーザー名がシステムに存在しない場合は無視され、代わりにユーザー ID(アーカイブまたは
--uidオプションから)が使われます。作成時は、アーカイブに格納するユーザー名を設定します。名前はシステムのユーザーデータベースと照合されません。--use-compress-programprogram組み込みの圧縮対応の代わりに、入力(x または t モード)または出力(c モード)を program へパイプします。
--ownername[:uid]指定されたユーザーを使います。uid が指定されない場合、name はユーザー名または数値 ID のいずれかです。詳細は
--unameオプションを参照してください。-v、--verbose詳細な出力を生成します。作成および展開モードでは、
tarはアーカイブから読み取る、またはアーカイブへ書き込む各ファイル名を一覧表示します。一覧モードでは、tarはls(1)に似た出力を生成します。追加の-vオプションは、作成および展開モードでも ls のような詳細を提供します。--versiontarおよびlibarchiveの版を表示して終了します。-w、--confirmation、--interactiveすべての操作について確認を求めます。
-Xfilename、--exclude-fromfilename指定されたファイルから除外パターンの一覧を読みます。除外の扱いの詳細は
--excludeを参照してください。--xattrs(c、r、u、x モードのみ)拡張ファイル属性をアーカイブまたは展開します。これは
--no-xattrsの逆であり、c、r、および u モード、またはtarを x モードで root として実行した場合の既定の動作です。-y(c モードのみ)結果のアーカイブを
bzip2(1)で圧縮します。展開または一覧モードでは、このオプションは無視されます。このtar実装は、アーカイブを読むときに bzip2 圧縮を自動認識することに注意してください。-Z、--compress、--uncompress(c モードのみ)結果のアーカイブを
compress(1)で圧縮します。展開または一覧モードでは、このオプションは無視されます。このtar実装は、アーカイブを読むときに compress 圧縮を自動認識することに注意してください。-z、--gunzip、--gzip(c モードのみ)結果のアーカイブを
gzip(1)で圧縮します。展開または一覧モードでは、このオプションは無視されます。このtar実装は、アーカイブを読むときに gzip 圧縮を自動認識することに注意してください。
次の環境変数は tar の実行に影響します。
TAR_READER_OPTIONS形式リーダーおよび圧縮リーダーの既定オプションです。
--optionsオプションがこれを上書きします。TAR_WRITER_OPTIONS形式ライターおよび圧縮ライターの既定オプションです。
--optionsオプションがこれを上書きします。LANG使用するロケールです。詳細は
environ(7)を参照してください。TAPE既定のデバイスです。
-fオプションがこれを上書きします。詳細は前述の-fオプションの説明を参照してください。TZ日付を表示するときに使うタイムゾーンです。詳細は
environ(7)を参照してください。
終了ステータス
Section titled “終了ステータス”tar ユーティリティは、成功時に 0 で終了し、エラーが発生した場合は >0 で終了します。
次の例は、2 つのファイル source.c と source.h を含む file.tar.gz という新しいアーカイブを作成します。
tar -czf file.tar.gz source.c source.h
このアーカイブの詳細な目次を見るには:
tar -tvf file.tar.gz
既定のテープドライブ上のアーカイブからすべてのエントリを展開するには:
tar -x
ISO 9660 CD-ROM イメージの内容を調べるには:
tar -tf image.iso
ファイル階層を移動するには、tar を次のように起動します
tar -cf - -C srcdir . | tar -xpf - -C destdir
または、より伝統的には
cd srcdir ; tar -cf - . | (cd destdir ; tar -xpf -
)
作成モードでは、アーカイブするファイルおよびディレクトリの一覧に、-Cfoo/baz 形式のディレクトリ変更指示と、@archive-file 形式のアーカイブ取り込みも含められます。たとえば、次のコマンドラインは
tar -c -f new.tar foo1 @old.tgz -C/tmp foo2
新しいアーカイブ new.tar を作成します。tar は現在のディレクトリからファイル foo1 を読み、出力アーカイブに追加します。次に old.tgz の各エントリを読み、それらのエントリを出力アーカイブに追加します。最後に /tmp ディレクトリへ切り替えて foo2 を出力アーカイブに追加します。
mtree(5) 形式の入力ファイルを使い、ディスク上の既存データとは異なる任意の所有権、権限、または名前を持つ出力アーカイブを作成できます。
$ cat input.mtree
#mtree
usr/bin uid=0 gid=0 mode=0755 type=dir
usr/bin/ls uid=0 gid=0 mode=0755 type=file content=myls
$ tar -cvf output.tar @input.mtree
--newer および --newer-mtime スイッチは、さまざまな一般的な日付および時刻の指定を受け付けます。これには “12 Mar 2005 7:14:29pm”、“2005-03-12 19:14”、“5 minutes ago”、および “19:14 PST May 1” が含まれます。
--options 引数は、アーカイブの生成または読み取りのさまざまな詳細を制御するために使えます。たとえば、type、time、および uid キーワードだけを含む mtree 出力を生成できます。
tar -cf file.tar --format=mtree --options='!all,type,time,uid' dir
または、gzip または xz 圧縮で使う圧縮レベルを設定できます。
tar -czf file.tar --options='compression-level=9'
。詳細については、archive_read(3) および archive_write(3) に記載されている archive_read_set_options() および archive_write_set_options() API 呼び出しの説明を参照してください。
まとめ書き引数形式は、歴史的な実装との互換性のために対応しています。先頭に - 文字のない最初の語からなり、各文字がオプションを示します。引数は別の語として続きます。引数の順序は、まとめ書きコマンド語内の対応する文字の順序と一致しなければなりません。たとえば、
tar tbf 32 file.tar
は 3 つのフラグ t、b、および f を指定します。b および f フラグはどちらも引数を必要とするため、コマンドラインに追加の項目が 2 つ必要です。32 は b フラグの引数、file.tar は f フラグの引数です。
モードオプション c、r、t、u、および x と、オプション b、f、l、m、o、v、および w は SUSv2 に適合します。
移植性を最大にするには、tar を起動するスクリプトは上記のまとめ書き引数形式を使い、c、t、および x モードと、b、f、m、v、および w オプションに限定すべきです。
ほかの tar 実装との互換性を高めるために、追加の長いオプションが提供されています。
セキュリティ
Section titled “セキュリティ”特定のセキュリティ上の問題は、tar を含む多くのアーカイブプログラムに共通です。特に、巧妙に作られたアーカイブは、tar に対象ディレクトリの外へファイルを展開するよう要求できます。これは、意図せず上書きするつもりがなかったファイルを、気づかないユーザーに上書きさせるために使われる可能性があります。アーカイブをスーパーユーザーが展開している場合、システム上の任意のファイルが上書きされる可能性があります。これが起きる方法は 3 つあります。tar にはそれぞれを防ぐ仕組みがありますが、詳しいユーザーはその意味を認識しておくべきです。
アーカイブエントリは絶対パス名を持てます。既定では、
tarはこの問題を防ぐため、復元前にファイル名から先頭の / 文字を取り除きます。アーカイブエントリは .. コンポーネントを含むパス名を持てます。既定では、
tarはパス名に .. コンポーネントを含むファイルを展開しません。アーカイブエントリはシンボリックリンクを悪用して、ファイルをほかのディレクトリへ復元できます。アーカイブは別のディレクトリへのシンボリックリンクを復元し、そのリンクを使ってそのディレクトリへファイルを復元できます。これを防ぐため、
tarは展開する各パスをシンボリックリンクについて検査します。最終パス要素がシンボリックリンクなら、それを削除してアーカイブエントリで置き換えます。-Uが指定されている場合、途中のシンボリックリンクも無条件に削除されます。-Uも-Pも指定されていない場合、tarはそのエントリの展開を拒否します。
身を守るには、信頼できない出所からのアーカイブには用心すべきです。展開する前に、次のコマンドでアーカイブの内容を調べるべきです。
tar -tf filename
tar が既存のファイルを上書きしないようにするには -k オプションを使い、既存のファイルを削除するには -U オプションを使うべきです。一般に、スーパーユーザー権限で実行しながらアーカイブを展開すべきではありません。tar の -P オプションは上記のセキュリティ検査を無効にし、絶対パス名、.. コンポーネント、またはほかのディレクトリへのシンボリックリンクを保持したままアーカイブを展開できることに注意してください。
bzip2(1)、compress(1)、cpio(1)、gzip(1)、pax(1)、shar(1)、xz(1)、libarchive(3)、libarchive-formats(5)、tar(5)
準拠する標準
Section titled “準拠する標準”tar コマンドに対する現行の POSIX 規格はありません。ISO/IEC 9945-1:1996(「POSIX.1」)に現れましたが、IEEE Std 1003.1-2001(「POSIX.1」)からは削除されました。この実装が対応するオプションは、既存の多数の tar 実装と、tar の旧 POSIX 仕様および pax の現行 POSIX 仕様を調査して策定されました。
ustar および pax 交換ファイル形式は、pax コマンド向けに IEEE Std 1003.1-2001(「POSIX.1」)で定義されています。
tar コマンドは Seventh Edition Unix に現れ、1979 年 1 月にリリースされました。ほかにも多数の実装があり、その多くはファイル形式を拡張しました。John Gilmore の pdtar パブリックドメイン実装(1987 年 11 月頃)はかなり影響が大きく、GNU tar の基礎となりました。GNU tar は FreeBSD 1.0 以降、FreeBSD の標準システム tar として含まれました。
これは libarchive(3) ライブラリに基づく完全な再実装です。FreeBSD 5.4 とともに 2005 年 5 月に初めてリリースされました。
このプログラムは、-l オプションの定義について ISO/IEC 9945-1:1996(「POSIX.1」)に従います。GNU tar はバージョン 1.15 より前、-l を --one-file-system オプションの同義語として扱っていたことに注意してください。
-C dir オプションは、歴史的な実装と異なる場合があります。
アーカイブ出力はすべて、出力が圧縮されている場合でも、正しいサイズのブロックで書き出されます。最後の出力ブロックがフルブロックサイズまでパディングされるかどうかは、形式と出力デバイスによって異なります。tar および cpio 形式では、出力が標準出力、またはテープドライブのようなキャラクタ/ブロックデバイスへ書き出される場合、最後の出力ブロックはフルブロックサイズまでパディングされます。出力が通常ファイルへ書き出される場合、最後のブロックはパディングされません。gzip(1) および bzip2(1) を含む多くの圧縮プログラムは、tar が作成したアーカイブを展開するときにヌルパディングについて苦情を出しますが、それでも正しく展開します。
圧縮および展開は内部で実装されているため、次が生成する圧縮出力と
tar -czf - file
次が生成する出力との間に、取るに足らない違いがある場合があります
tar -cf - file | gzip
既定は標準 I/O パスへアーカイブを読み書きすることであるべきですが、伝統(および POSIX)はそう定めていません。
r および u モードは、アーカイブが非圧縮で、ディスク上の通常ファイルにあることを要求します。ほかのアーカイブは、@archive-file 拡張を付けた c モードで変更できます。
@foo または -foo というファイルをアーカイブするには、それぞれ ./@foo または ./-foo として指定しなければなりません。
作成モードでは、先頭の ./ は常に取り除かれます。先頭の / は、-P オプションが指定されない限り取り除かれます。
作成時と展開時の両方で、ファイル選択のよりよい対応が必要です。
マルチボリュームアーカイブには、まだ対応していません。
異なる種類のアーカイブ形式(tar と cpio など)を @- 規約で変換すると、ハードリンク情報が失われることがあります。(これは、アーカイブ形式ごとにハードリンク情報の格納方法が互換でないことの帰結です。)