Programming Field

Tar - DOS/コマンドプロンプト コマンド一覧

複数のファイルをまとめて1つのファイル(アーカイブ)にしたり、アーカイブファイルを展開したりするプログラムです。

Windows には Windows 10 1803 以降に標準で搭載されています。なお、この搭載されたTarプログラムは「bsdtar」であり、Linuxで標準的な「GNU tar」とはオプションが一部異なりますのでご注意ください。

Windows 10/11 で搭載されている tar.exe バージョン
bsdtar バージョンWindows 10Windows 11日付備考
tar 3.3.210.0.17134.* (1803)(10.0.22000.194)初期搭載バージョン
tar 3.5.110.0.17763.2452 (1809)
10.0.18363.2037 (1909)
10.0.19042.1466 (20H2)
10.0.19043.1466 (21H1)
10.0.19044.1466 (21H2)
10.0.22000.434 (21H2)2022/01/11Windows 11 22H2 は最初からこのバージョン
tar 3.6.2未提供10.0.22621.2361 (22H2)
10.0.22631.2506 (23H2)
2023/11/14Windows 11 23H2 は最初からこのバージョン
Windows 11 21H2 には未提供

構文

tar[.exe] -c [<options>] <files...>
tar[.exe] -r -f <archive> [<options>] <files...>
tar[.exe] -t [<options>]
tar[.exe] -u -f <archive> [<options>] <files...>
tar[.exe] -x [<options>]

Tarでのオプション指定方法はLinux系で標準的な「-」および「--」で始まるオプション形式を用いており、「/」を始めの文字として使うことはできません。また、1文字オプションはつなげて指定することができますが、追加パラメーターが必要なオプションは必ず末尾に指定し、その直後に追加パラメーターを指定する必要があります。このため、「tar -xvf archive.tar」は有効な構文ですが、「tar -xfv archive.tar」は「f オプションのパラメーターが『v』」という意味になってしまいます。

なお、Tar固有の指定方法として、「tar」プログラム名の直後にスペースを挟んで、1文字オプションを「-」を抜いてまとめて指定することができます(例: 「tar xf archive.tar」)。よくある指定方法として「xzvf」「xvzf」「xzf」「xf」や「czvf」「cvzf」「czf」「caf」などがあります。なお、この指定方法に限り、追加パラメーターが必要なオプションが末尾でなくても構いません(が、通常は最後に指定します)。

オプション一覧

バンドルオプション (-c, -r, -t, -u, -x)

--help および --version を使う場合を除き、以下のオプションのうち1つを必ず指定します。以下、「アーカイブファイル」は後述の「-f」オプションで指定することができます。

-c, --create アーカイブファイルの作成(複数のファイルを1つにまとめる)を行います。「-c」または「--create」と指定します。
-r, --append アーカイブファイルにファイルを追加します。「-r」または「--append」と指定します。既に追加しようとするファイルと同名のファイルがアーカイブ内に存在する場合でも上書きを行いません。このオプションを使う場合は非圧縮のアーカイブファイルのみ扱うことができます。
-t, --list アーカイブファイル内のファイルを一覧で出力します。「-t」または「--list」と指定します。
-u, --update アーカイブファイルにファイルを追加しますが、「-r」と異なりファイル更新日時が同じか新しい場合にのみファイルを追加します(上書きはしません)。「-u」または「--update」と指定します。このオプションを使う場合は非圧縮のアーカイブファイルのみ扱うことができます。
-x, --extract アーカイブファイルに含まれるファイルを展開します。「-x」または「--extract」と指定します。

その他のオプション

<files...>

-c, -r, -u の場合アーカイブに含めるファイル名を1つまたはスペース区切りで複数指定します。ファイル名にスペースを含む場合は「" "」で括ります。ファイル指定はすべてのオプションの後に指定する必要があります(これ以降の記述はすべてファイルとして扱われます)。

ファイル名にはワイルドカードが使用できます(FindFirstFileW 関数が使用されます)。また、相対パス名を指定した場合は --cd (-C) オプションで指定したディレクトリ、または指定しなかった場合はカレントディレクトリをベースとしたパスが参照されます。(そのため、サブディレクトリ内のファイルは探索されません。)

※ アーカイブにファイルが追加される際、ディレクトリ名を含んでいるとその名前がそのままアーカイブファイル内に格納されます。「..」などの特殊ディレクトリ名も含まれますのでご注意ください。

-x, -t の場合は展開またはリストアップするファイルの絞り込みを行います。指定する形式は「パターン指定で使用できる文字」をご覧ください。

@<archive> -c または -r でのみ使用可能: アーカイブに取り込むファイルを <archive> で指定したアーカイブファイルから取り出します。<files...> を指定しなかった場合はアーカイブを変換するような挙動になります。
-? --help と同じ効果です。
-a

-c でのみ使用可能: アーカイブの形式をアーカイブ名から決定します。例えば「.tgz」という拡張子の名前を指定した場合はTarball(restricted pax format)+gzip圧縮、「.zip」という拡張子の名前を指定した場合はzip形式で作成します。このオプションを指定して形式が決定された場合、「-z」や「-j」などのアーカイブ形式を指定するオプションは無視されます。一方、拡張子から形式が決定できなかった場合は「-z」や「-j」などで指定した形式が使用されます。

なお、使用できる拡張子は「書き込み時の拡張子によるファイル形式の決定」をご覧ください。

--absolute-paths -P と同じ効果です。
--acls

[Windows 版] このオプションは指定しても効果がありません。

-c, -r, -u, -x で使用可能: POSIX.1e または NFSv4 のACLを書き込み、または復元します。-c, -r, -u において、および -x がrootユーザーで実行された場合は --acls が指定されたものとして動作します(--no-acls を指定した場合を除く)。

--auto-compress -a と同じ効果です。
-b <blocksize> 読み取り・書き込み時の1回あたりのサイズ(バッファーサイズ)を1から8192までのブロック単位(1ブロックあたり512バイト)で指定します。テープデバイスの入出力を想定して設けられたオプションですが、入出力対象がテープデバイスでなくても使用できます。なお、既定値は20ブロック(10240バイト)です。
-B このオプションは他の tar プログラムとの互換性を保つために用意されたオプションであり、この tar においては指定しても無視されます。
--b64encode -c, -r, -u において生成したアーカイブを Base64 Encode (ヘッダー付き) します。--uuencode と同時に指定することはできません。
--block-size <blocksize> -b と同じ効果です。
--blocking-factor <blocksize> -b と同じ効果です。
--bunzip2 -j と同じ効果です。
--bzip -j と同じ効果です。
--bzip2 -j と同じ効果です。
-C <directory>

-c および -r においては、ファイルを探索する前に <directory> で指定したディレクトリに移動し、その中で <files...> に指定したパターンにマッチするファイルを取り込みます。

-x においては、ファイルを展開する前に <directory> で指定したディレクトリに移動し、その中にファイルを展開します。

いずれの場合も、<directory> は存在するディレクトリである必要があります。

--cd <directory> -C と同じ効果です。
--chroot

[Windows 版] chroot の概念が無いためこのオプションは使用できません。

-x でのみ使用可能: -C オプションでディレクトリ移動した後ファイルを展開する前に chroot を行います。

--clear-nochange-fflags -x でのみ使用可能: ファイルを展開するときに出力先に同名のファイルが存在する場合、ファイルを削除する前にファイル属性をクリアします。例えば出力先ファイルが読み取り専用属性を持っていると、通常であれば書き込み(の前の削除処理)に失敗しますが、このオプションを指定した場合は属性を解除してから削除を行うため成功するようになります。
--compress -Z と同じ効果です。
--confirmation -w と同じ効果です。
--dereference -L と同じ効果です。
--directory <directory> -C と同じ効果です。
--disable-copyfile --no-mac-metadata と同じ効果です。(Windows では使用できません。)
--exclude <pattern> <pattern> で指定したパターンのファイル/ディレクトリを含まないようにします。<pattern> に指定する形式は「パターン指定で使用できる文字」をご覧ください。このオプションはコマンドライン上でのパターンの指定、および --include でのパターン指定より優先されます。
--exclude-from <filename> -X と同じ効果です。
--exclude-vcs バージョン管理システム(バージョンコントロールシステム)でバージョン管理を行う上で一般的に使用されるファイルを除外します。具体的には「CVS」「.cvsignore」(以上CVSのファイル)、「RCS」(RCSのファイル)、「SCCS」(SCCSのファイル)、「.svn」(SVNのファイル)、「.git」「.gitignore」「.gitattributes」「.gitmodules」(以上gitのファイル)、「.arch-ids」 「{arch}」 「=RELEASE-ID」 「=meta-update」 「=update」(以上Archのファイル)、「.bzr」「.bzrignore」「.bzrtags」(以上Bazaarのファイル)、「.hg」「.hgignore」「.hgtags」(以上Mercurialのファイル)、「_darcs」(darcsのファイル)が除外されます。
-f <file>

アーカイブファイル名を指定します。-c, -r, -u においては出力先のファイル、-t, -x においては入力元のファイルとなります。

このオプションを省略した場合は、Windows の場合は「\\.\tape0」が使用されます。また、<file> に「-」を指定した場合は標準入力/標準出力が使用されます。

[v3.6.0 以降] このオプションを省略し、「\\.\tape0」が利用不可の場合は標準入力/標準出力が使用されます。

--fast-read -q と同じ効果です。
--fflags

-c, -r, -u, -x で使用可能: システム固有のファイル属性を保存/展開(復元)するようにします。--no-fflags が指定されていない限りこのオプションは既定のオプションで --fflags を指定しなくても指定されたものとして動作します(-x を除く(※))。

※ -x では「root ユーザーの場合既定で有効」ですが、Windows においては有効になりません。

--file <file> -f と同じ効果です。
--files-from <filename> -T と同じ効果です。
--format <format>

-c, -r, -u で使用可能: アーカイブファイルの形式を指定します。指定できる形式は「書き込み時のアーカイブ形式の指定」をご覧ください。

--gid <id> アーカイブ作成時はファイルのGroup IDを <id> で指定した数値に置き換えます。アーカイブ展開時は Windows においては無視されます。
--gname <name> アーカイブ作成時はファイルのグループ名(ユーザーグループ)を <name> で指定した名前に置き換えます。アーカイブ展開時は Windows においては無視されます。
--group <group> アーカイブ作成時はファイルのグループ名(ユーザーグループ)を指定のグループに置き換えます。<group> には「name:id」の形式(id は数値)か、「id」(数値)のみを指定します。アーカイブ展開時は Windows においては無視されます。
--grzip -c でのみ効果あり: アーカイブを grzip 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
--gunzip -z と同じ効果です。
--gzip -z と同じ効果です。
-H -c, -r でのみ使用可能: コマンドラインで指定されたファイルにシンボリックリンクがある場合、シンボリックリンクそのものを格納するのではなく、リンク先のファイル/ディレクトリを格納します。ただし指定ディレクトリ内にシンボリックリンクが含まれていた場合はリンクそのものを格納します。
-h -L と同じ効果です。-? とは異なります。
--help

プログラムの使い方を出力して終了します。

※ 「-h」は別のオプションとして扱われます。
※ プログラムの使い方の出力ではすべてのオプションは出力されません。

--hfsCompression

[Windows 版] Windows 版では使用できません。

-x でのみ使用可能・Mac OS X のみ: ファイルを展開した際に展開したファイルをHFS+圧縮します。

-I <filename> -T と同じ効果です。
--ignore-zeros このオプションは「--option read_concatenated_archives」のエイリアスとして扱われます。
--include <pattern> <pattern> で指定したパターンのファイル/ディレクトリのみを含めるようにします。<pattern> に指定する形式は「パターン指定で使用できる文字」をご覧ください。このオプションはコマンドライン上でのパターンの指定より優先されますが、--exclude がある場合はそちらが優先されます。
--insecure -p と同じ効果です。
--interactive -w と同じ効果です。
-j -c でのみ効果あり: アーカイブを bzip2 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
-J -c でのみ効果あり: アーカイブを xz 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
-k -x でのみ使用可能: ファイルを展開する際に既存ファイルを上書きしません。アーカイブに同じ名前のファイルが2つ以上含まれる場合は最初に現れたファイルのみが展開されます。
--keep-newer-files -x でのみ使用可能: ファイルを展開する際に既存ファイルの方が(更新日時が)同じか新しい場合は上書きしません。-k とは効果が異なります。
--keep-old-files -k と同じ効果です。
-l (小文字のL)

-c, -r でのみ使用可能: bsdtar においてはこのオプションは実装されていません。(cf. The bsdtar option --check-links does not work · Issue #193)

実装されている場合、ファイル格納時にハードリンクされたファイルがあれば、そのリンク先のファイルが取り込まれていなければ警告の出力を行います。(コマンド自体は成功します。)

-L -c, -r でのみ使用可能: シンボリックリンクがある場合、シンボリックリンクそのものを格納するのではなく、リンク先のファイル/ディレクトリを格納します。
--lrzip -c でのみ効果あり: アーカイブを lrzip 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
--lz4 -c でのみ効果あり: アーカイブを lz4 互換の形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
--lzip -c でのみ効果あり: アーカイブを lzip 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
--lzma -c でのみ効果あり: アーカイブをオリジナルの LZMA アルゴリズムで圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
--lzop -c でのみ効果あり: アーカイブを lzop 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
-m -x でのみ使用可能: ファイル展開時、更新日時を復元しない(アーカイブに書かれた日時を利用しない)ようにします。
--mac-metadata

[Windows 版] Windows 版では利用できません。

-c, -r, -u, -x で使用可能・Mac OS X でのみ使用可能: ファイルの格納または展開時に、拡張ACLおよび拡張ファイル属性を copyfile 関数を使ってコピーします。-c, -r, -u において、および -x がrootユーザーで実行された場合は --mac-metadata が指定されたものとして動作します(--no-mac-metadata を指定した場合を除く)。

--modification-time -m と同じ効果です。
-n ファイル格納時、ディレクトリの中を(再帰的に)探索して取り込みしないようにします。
--newer <time>

-c, -r, -u で使用可能: <time> で指定した時刻より作成日時が新しいファイルのみ格納します。

※ 時刻の形式は bsdtar 独自実装になっています。

--newer-ctime <time> --newer と同じ効果です。
--newer-ctime-than <file> --newer-than と同じ効果です。
--newer-mtime <time> -c, -r, -u で使用可能: <time> で指定した時刻より更新日時が新しいファイルのみ格納します。
--newer-mtime-than <file> -c, -r, -u で使用可能: <file> で指定したファイルより更新日時が新しいファイルのみ格納します。
--newer-than <file> -c, -r, -u で使用可能: <file> で指定したファイルより作成日時が新しいファイルのみ格納します。
--no-acls

[Windows 版] このオプションは指定しても効果がありません。

-c, -r, -u, -x で使用可能: POSIX.1e または NFSv4 のACLを扱いません。--acls の否定オプションです。-c, -r, -u において、および -x がrootユーザーで実行された場合は --acls が指定されたものとして動作するため、含めない場合はこのオプションが必要です。

--nodump

[Windows 版] このオプションは指定しても効果がありません。

-c, -r でのみ使用可能: 「nodump」フラグ(UF_NODUMP)のついたファイルを格納せず除外します。

--no-fflags

-c, -r, -u, -x で使用可能: システム固有のファイル属性を扱いません。--no-fflags が指定されていない限り --fflags が指定されたものとして動作します(-x を除く(※))。

※ -x では「root ユーザーの場合既定で --fflags が有効」ですが、Windows においては有効になりません。

--no-mac-metadata

[Windows 版] Windows 版では利用できません。

-c, -r, -u, -x で使用可能・Mac OS X でのみ使用可能: ファイルの格納または展開時に、拡張ACLおよび拡張ファイル属性をコピーしません。-c, -r, -u において、および -x がrootユーザーで実行された場合は --mac-metadata が指定されたものとして動作するため、それらのケースでコピーしたくない場合はこのオプションが必要です。

--nopreserveHFSCompression

[Windows 版] このオプションは指定しても効果がありません。

-x でのみ使用可能・Mac OS X (v10.6 以降) でのみ効果あり: 格納されていたファイルがHFS+圧縮されていたとマークされていたとしても、展開時にHFS+圧縮状態にしません。

--no-read-sparse -c, -r, -u で使用可能: 格納するファイルにスパースファイルがある場合でもスパースファイルとしては格納せずにデータがあるものとして扱います。既定では --read-sparse が指定されたものとして扱われるため、それを打ち消す場合はこのオプションの指定が必要です。
--norecurse -n と同じ効果です。
--no-recursion -n と同じ効果です。
--no-safe-writes -x でのみ使用可能: ファイル展開時、「一時ファイルに展開して展開先のファイル名に名前変更する」という処理を行いません。--safe-writes オプションの否定になります。
--no-same-owner

[Windows 版] このオプションは指定しても効果がありません。

-x でのみ使用可能: ファイル展開時ファイルのユーザー(所有者)およびグループを展開しません。--same-owner オプションの否定になります。rootユーザーで実行されていない場合はこのオプションが既定で使用されます。

--no-same-permissions -x でのみ使用可能: ファイル展開時ファイルのパーミッション(ファイルの権限やファイル属性・拡張属性、ACL)を展開しません。-p オプションの否定になります。rootユーザーで実行されていない場合はこのオプションが既定で使用されます。
--no-xattr --no-xattrs と同じ効果です。
--no-xattrs -c, -r, -u, -x で使用可能: ファイル格納時やファイル展開時にファイルの拡張属性を無視します。--xattrs オプションの否定になります。-x においてrootユーザーで実行されていない場合はこのオプションが既定で使用されます。
--null -I および -T で読み込むファイルにおける区切り文字を改行文字からNULL文字にします。
--numeric-owner このオプションは「--uname "" --gname ""」と等価で、アーカイブ展開時はアーカイブに書き込まれたユーザー名・グループ名を無視(代わりにUID・GIDを使用)し、アーカイブ作成時はアーカイブ内にユーザー名・グループ名を書き込まないようにします。
-o

このオプションは -x-c, -r, -u で意味が異なります。

-x においては、ファイル展開時にアーカイブに書き込まれたユーザー・グループを使わずにプログラムを実行したユーザー・グループを使用します。-p オプションを指定、またはrootユーザーで実行された場合を除きこのオプションは特に効果ありません。

-c, -r, -u においては、このオプションは「--format ustar」と同じ意味として扱われます。

-O

-x において、展開したファイルをディスクではなく標準出力(STDOUT)に書き込みます。

-t においては、ファイルの一覧を標準出力ではなく標準エラー出力(STDERR)に書き込みます。

※ 「--to-stdout」はこのオプションと等価ですが、名前に反して -t においては標準エラー出力への出力となります。

--older <time>

-c, -r, -u で使用可能: <time> で指定した時刻より作成日時が古いファイルのみ格納します。

※ 時刻の形式は bsdtar 独自実装になっています。

--older-ctime <time> --older と同じ効果です。
--older-ctime-than <file> --older-than と同じ効果です。
--older-mtime <time> -c, -r, -u で使用可能: <time> で指定した時刻より更新日時が古いファイルのみ格納します。
--older-mtime-than <file> -c, -r, -u で使用可能: <file> で指定したファイルより更新日時が古いファイルのみ格納します。
--older-than <file> -c, -r, -u で使用可能: <file> で指定したファイルより作成日時が古いファイルのみ格納します。
--one-file-system -c, -r, -u で使用可能: ファイル走査中、ファイルが存在するマウントポイントが最初と異なる場合はスキップします。(Mountvolを使うとディレクトリにディスクをマウントすることができます。)
--options <options>

各アーカイブ形式において特有のオプションを指定する際に用います。<options> には以下の形式の文字列を指定します。

key=valuekey にオプション名を指定し、= を挟んで value を指定した場合は対応する名前のオプションに value という値を指定します。
keykey にオプション名を指定し、それ以上何も指定しない場合は「対応する名前のフラグが ON」を指します。「key=1」と等価です。
!keykey にオプション名を指定し、その手前に「!」を指定した場合は、「対応する名前のフラグが OFF」を指します。
module:key=value
module:key
module:!key
上記3つの手前に「module:」を指定した場合は、そのモジュール(形式)に対してのみオプションを適用します。

使用できるオプションの詳細は archive_read_set_options の manpage (ファイル展開時) および archive_write_set_options の manpage (アーカイブ作成時) をご覧ください。

--owner <owner> アーカイブ作成時はファイルのユーザー名(所有者)を指定のユーザーに置き換えます。<owner> には「name:id」の形式(id は数値)か、「id」(数値)のみを指定します。アーカイブ展開時は Windows においては無視されます。
-p

-x でのみ使用可能: ファイル展開時ファイルのパーミッション(ファイルの権限やファイル属性・拡張属性、ACL)を書き込む(アーカイブに記述された内容をそのまま展開する)ようにします。部分的に復元しない場合はこのオプション指定の後ろに --no-acls, --no-fflags, --no-mac-metadata, および --no-xattrs の各オプションを指定することで制御できます。

※ このオプションは「root ユーザーの場合既定で -p が有効」ですが、Windows においては有効になりません。

-P ファイル展開時は、アーカイブファイルに記述された絶対パスをそのまま使うようにします。ファイル格納時は、アーカイブファイルに絶対パスを書き込むようにします。通常は、パス名の先頭がドライブ文字(ルートパス; Windowsの場合)であった場合はルートパスが取り除かれた状態で扱われます。
--passphrase <passphrase> アーカイブ展開時や作成時にパスワードを使います。現在では zip 形式でのみ有効です。コマンドラインに直接パスワードを指定することになるので、パスワード露呈などのリスクがあります。
--posix -c, -r, -u で使用可能: このオプションは「--format pax」と同じ意味として扱われます。
--preserve-permissions -p と同じ効果です。
-q -x, -t でのみ使用可能: ファイルの展開およびリストアップ時、パターンごとに最初にマッチしたファイルのみ出力するようにします。--include が複数回指定されている場合はそのパターンごとに出力されます。
--read-full-blocks -B と同じ効果ですが、このオプションは他の tar プログラムとの互換性を保つために用意されたオプションであり、この tar においては指定しても無視されます。
--read-sparse -c, -r, -u で使用可能: 格納するファイルにスパースファイルがある場合スパースファイルとしてマークして格納します。なお、このオプションは既定で有効です(--no-read-sparse を指定した場合を除く)。
-s <pattern>

[Windows 版] Windows 版ではサポートされていません。

ファイルの格納時および展開時、ファイル名を指定のパターンで置き換えます。<pattern> には「/old/new/[ghHprRsS]」の形式(sed などでよくある形式)で正規表現と置換文字列を指定します。(new には「~」(マッチしたテキスト全体に置き換え)および「\1 ~ \9」(キャプチャーしたテキスト)が使用できます。)

-S

-x でのみ使用可能: 展開するファイルが 16384 バイトごとに 0 データが連続している場合、実際の書き込みを行わずにファイル書き込み位置のみを移動させます。

※ 「16384 バイト」は Windows 版での値です。他のバージョンではディスクによって異なります。
※ 説明では「スパースファイルとして展開する」とありますが、Windows 版ではスパースファイルにはなりません。

--safe-writes -x でのみ使用可能: ファイルの展開をアトミックに行います。より具体的には、ファイル展開時、「一時ファイルに展開して展開先のファイル名に名前変更する」という処理を行います。Tar は通常では「展開先のファイルをまず削除してからファイルを作成して展開する」という処理を行いますが、このオプションを指定することにより、ファイルにアクセスするアプリケーションが「古いデータまたは新しいデータの必ずどちらか一方」を扱えるようになります。
--same-owner

[Windows 版] このオプションは指定しても効果がありません。

-x でのみ使用可能: ファイル展開時にアーカイブに記録されたユーザー名(所有者)とグループを復元します。rootユーザーで実行された場合は既定で有効になります(--no-same-owner が指定された場合を除く)。

--same-permissions -p と同じ効果です。
--strip-components <count> <count> で指定した数だけパスの要素(ディレクトリ名)をスキップします。例えば、「hoge/piyo.txt」というファイルがアーカイブにあり、「--strip-components 1」が指定された場合は、展開時「hoge」ディレクトリがスキップされ「piyo.txt」というファイルを作成します。なお、ルートディレクトリ(「/」や「C:\」など)も1コンポーネントとしてカウントされます。
-T <filename>

-c, -x, -t でのみ使用可能: -x および -t においては、展開またはリストアップするファイルの一覧を <filename> から取得します。-c においては、アーカイブに含めるファイルの一覧を <filename> から取得します。

<filename> に書く内容は、1行ごとに対象とするファイル名を記述していきます(改行文字 \r または \n が区切り文字となります)。また -c を使用しているとき、ファイル内の1行に「-C」と書いてその次の行にディレクトリ名を記述すると、ファイルを探索するディレクトリを変更することができます。

--null オプションを指定した場合は、「1行ごとの区切り」が「NULL文字区切り」に変更されます。また、--null オプションを使用した場合は「-C」記述は利用できなくなります。

--to-stdout -O と同じ効果です。
--totals -c, -r, -u で使用可能: ファイルを格納した後に、その結果(書き込みバイト数)を標準エラー出力(STDERR)に出力します。
-U -x でのみ使用可能: ファイルを展開する際、ファイルを書き込みする前に対象ファイルの削除を行います。展開しようとしているファイルが出力先に多く存在している場合はパフォーマンスが向上する可能性がありますが、展開しようとしているファイルがほとんど存在しない場合は逆にパフォーマンスが悪化する可能性があります。また、出力先がディレクトリのシンボリックリンクだった場合などでは通常は tar 処理がエラーになりますが、このオプションを使うことで(シンボリックリンクが最初に削除されるため)正常に展開できるようになります。
--uid <id> アーカイブ作成時はファイルのUser ID(所有者)を <id> で指定した数値に置き換えます。アーカイブ展開時は Windows においては無視されます。
--uname <name> アーカイブ作成時はファイルのユーザー名(所有者)を <name> で指定した名前に置き換えます。アーカイブ展開時は Windows においては無視されます。
--uncompress -Z と同じ効果です。
--use-compress-program <cmdline> アーカイブの作成時または展開時に、tar が持っている圧縮/解凍処理を使う代わりに、<cmdline> で指定したコマンドを実行してパイプで受け渡しします。コマンドラインが引数やスペースを含む場合は「" "」で括る必要があります。
--uuencode -c, -r, -u において生成したアーカイブを uuencode (ヘッダー付き) します。--b64encode と同時に指定することはできません。
-v 詳細出力を有効にします。アーカイブの作成や展開時は、対象となったファイルの一覧を出力します。-t によるリストアップ時は、ファイル属性や日付などの情報も詳細に出力します。また、アーカイブ作成や展開時においては、「-v」を重ねる(「-v -v」や「-vv」などと指定する)ことでさらに詳細な出力にすることができます(最大3つまで)。
--verbose -v と同じ効果です。
--version tar のバージョン情報を出力して終了します。このオプションを使う場合は、-x-c などの指定は不要です。
-w

ファイル格納時または展開時、その操作を許可するかどうかを尋ねるプロンプトを表示します。プロンプトではEnterまたはnを入力するとスキップされます。

※ Windows 版ではバグ?によりこのオプションがうまく使用できません。

-X <filename> ファイル格納時・展開時に特定のパターンを除外するためのパターンを <filename> で指定したファイルから読み取ります。除外パターンについては「パターン指定で使用できる文字」をご覧ください。
--xattrs -c, -r, -u, -x で使用可能: ファイル格納時やファイル展開時にファイルの拡張属性を扱うようにします。-c, -r, -u, および -x においてrootユーザーで実行されている場合はこのオプションが既定で使用されます(--no-xattrs が指定された場合を除く)。
--xz -J と同じ効果です。
-y -c でのみ効果あり: アーカイブを bzip2 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
-z -c でのみ効果あり: アーカイブを gzip 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
-Z -c でのみ効果あり: アーカイブを compress 形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。
--zstd -c でのみ効果あり: アーカイブを zstd 互換の形式で圧縮します。-x-t においては圧縮形式を自動で判別するため、このオプションを指定する必要はありません。

解説

tar は古くからUnix/Linux系で使用されていたアーカイバ(複数のファイルをまとめる/展開する)プログラムであり、Windows では Windows 10 1803 以降で標準で使用できるようになりました。

Windows に含まれる tar は「bsdtar」であり、Linux系で比較的一般的な「GNU tar」とは細かいオプションや対応形式が異なります(対応形式は bsdtar の方が多くなっています)。そのため、tar を使う際 Windows とLinux系で同一のオプションが使用できない場合があります。

パターン指定で使用できる文字

-x および -t オプションで使用するファイル名の絞り込みパターン、および --exclude--include で使用できるパターンは「shell-style globbing pattern」です。このパターンでは以下の文字が使用できます。(ワイルドカードよりも多くの種類が使用できます。)

文字 意味
* 任意の0文字以上にマッチ
? 任意の1文字にマッチ
[chars] chars に指定した文字パターンにマッチ (例: 「[bc]at」なら「bat」「cat」にマッチ、「[b-f]at」なら「bat」「cat」「dat」「eat」「fat」にマッチ)
chars の先頭に「^」または「!」があった場合は「否定」になり、後続の文字パターンに一致しないものにマッチします。
^ (先頭でのみ有効です) 後続のパターンが先頭にある場合にのみマッチ
$ (末尾でのみ有効です) それまでのパターンが末尾に当たる場合にのみマッチ
\ 直後の1文字を(上記に挙げた文字の場合その意味を無視して)普通の文字として扱います

注意点として、「^」文字はコマンドプロンプトにおいては特殊文字「^」であるため、使用する場合はパターン全体を「" "」で括るか、「^^」のように二重に記述する必要があります。

(詳細な処理: ソースコード libarchive/archive_pathmatch.c)

書き込み時のアーカイブ形式の指定

--format オプションで指定できるアーカイブ形式は以下の通りです。(大文字・小文字が区別されます。)

名前形式
7zip7-zip 形式
ar静的ライブラリファイル(BSD)
arbsd静的ライブラリファイル(BSD)
argnu静的ライブラリファイル(SVR4)
arsvr4静的ライブラリファイル(SVR4)
bincpio bin 形式
bsdtartar(Tarball) 形式(BSD)
cd9660ISO 9660 形式
cpiocpio 形式
gnutartar(Tarball) 形式(GNU)
isoISO 9660 形式
iso9660ISO 9660 形式
mtreemtree(ファイルツリー記述) 形式
mtree-classicmtree(ファイルツリー記述) 旧形式
newccpio newc 形式
odccpio odc 形式
oldtartar(Tarball) 形式(v7)
paxpax 形式
paxrtar(Tarball) 形式(BSD)
posixpax 形式
pwbcpio pwb 形式
raw無変換(入力データをそのまま出力にする)
rpaxtar(Tarball) 形式(BSD)
sharshar(シェルアーカイブ) 形式
shardumpshar(シェルアーカイブ) dump 形式
ustarustar 形式
v7tartar(Tarball) 形式(v7)
v7tar(Tarball) 形式(v7)
warcwarc 形式
xarxar 形式
zipzip 形式

なお、raw 形式のみ対象ファイルは1ファイルのみという制限があります。

(参考: ソースコード libarchive/archive_write_set_format_by_name.c)

書き込み時の拡張子によるファイル形式の決定

-c オプションと -a (--auto-compress) オプションを同時に使った場合、拡張子から形式が決定されます。その際に使用できる拡張子は以下の通りです。(大文字・小文字が区別されます。) 「.tar.gz」のように複数の拡張子を結合した形になっている場合は、左から順番に分割されそれぞれ対応する形式が適用されます。

アーカイブ形式
拡張子形式
.7z7-zip 形式
.ar静的ライブラリファイル(BSD)
.cpiocpio 形式
.isoISO 9660 形式(※)
.mtreemtree(ファイルツリー記述) 形式
.sharshar(シェルアーカイブ) 形式
.tartar(Tarball) 形式(BSD)
.warcwarc 形式
.xarxar 形式
.zipzip 形式
圧縮形式
拡張子形式
.Zcompress 形式
.bz2bzip2 形式
.gzgzip 形式
.grzgrzip 形式
.lrzlrzip 形式
.lzlzip 形式
.lz4lz4 形式
.lzolzop 形式
.lzmalzma 形式
.uuuuencode 形式
.xzxz 形式
.zstzstd 形式
エイリアス
拡張子形式
.taz.tar + .gz
.tgz.tar + .gz
.tbz.tar + .bz2
.tbz2.tar + .bz2
.tz2.tar + .bz2
.tlz.tar + .lzma
.txz.tar + .xz
.tzo.tar + .lzo
.taZ.tar + .Z
.tZ.tar + .Z
.tzst.tar + .zst

※ 「.iso」は v3.5.1 (Windows 10) においてはバグにより解釈されません(v3.6.0 で修正されています)。「-a」の代わりに「--format iso」を使用することで ISO 形式のファイルを生成できます。

(参考: ソースコード tar/creation_set.c)

サンプル1

tar -c -a -v -f foo.zip *.txt

カレントディレクトリにある「*.txt」ファイルをまとめて「foo.zip」を作成します。「-a」オプションにより形式が拡張子から自動選択されます。

サンプル2

tar -cavf foo.zip *.txt

サンプル1と同じです。通常は1文字オプションは複数まとめます。

サンプル3

tar cavf foo.zip *.txt

サンプル1と同じです。tar に限り、「-」を省くことができます。

サンプル4

tar -xvf foo.zip

「foo.zip」に含まれるファイルをカレントディレクトリに展開します。

サンプル5

tar -xvf foo.zip -C bar

「foo.zip」に含まれるファイルを bar ディレクトリに展開します。bar ディレクトリはコマンド実行時点で存在する必要があります。

サンプル6

tar -czvf baz.txt --b64encode *.txt

カレントディレクトリにある「*.txt」を tar 形式でまとめた後 gzip で圧縮し、さらに Base64 Encode して「baz.txt」に出力します。

サンプル7

tar -xvf baz.txt --b64encode

サンプル6で作成したファイルを展開します。

関連項目