TAR(1) | GNU TAR マニュアル | TAR(1) |
名前¶
tar - アーカイブユーティリティ
書式¶
伝統的な使用法¶
tar {A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo] [ARG...]
UNIX スタイルの使用法¶
tar -A [OPTIONS] ARCHIVE ARCHIVE
tar -c [-f ARCHIVE] [OPTIONS] [FILE...]
tar -d [-f ARCHIVE] [OPTIONS] [FILE...]
tar -t [-f ARCHIVE] [OPTIONS] [MEMBER...]
tar -r [-f ARCHIVE] [OPTIONS] [FILE...]
tar -u [-f ARCHIVE] [OPTIONS] [FILE...]
tar -x [-f ARCHIVE] [OPTIONS] [MEMBER...]
GNU スタイルの使用法¶
tar {--catenate|--concatenate} [OPTIONS] ARCHIVE ARCHIVE
tar --create [--file ARCHIVE] [OPTIONS] [FILE...]
tar {--diff|--compare} [--file ARCHIVE] [OPTIONS] [FILE...]
tar --delete [--file ARCHIVE] [OPTIONS] [MEMBER...]
tar --append [-f ARCHIVE] [OPTIONS] [FILE...]
tar --list [-f ARCHIVE] [OPTIONS] [MEMBER...]
tar --test-label [--file ARCHIVE] [OPTIONS] [LABEL...]
tar --update [--file ARCHIVE] [OPTIONS] [FILE...]
tar --update [-f ARCHIVE] [OPTIONS] [FILE...]
tar {--extract|--get} [-f ARCHIVE] [OPTIONS] [MEMBER...]
注記¶
この マニュアルページは GNU tar の簡単な説明です。 使用例や推奨される使い方を含む詳しい議論については、texinfo 形式の GNU Tar Manual を見てください。info リーダーと tar 関連文書が御使用のシステムに正しくインストールされているなら、コマンド
で詳細なマニュアルが読めるはずです。
詳細なマニュアルは、 emacs(1) の info モードでも閲覧することができます。 また、下記のサイトに行けば、様々な形式にした詳細マニュアルのオンライン版を見つけることができます。
この マニュアルページと GNU Tar Manual の内容に食い違いがある場合は、後者の方が信頼できる情報源です。
説明¶
GNU tar は、アーカイブプログラムです。 アーカイブプログラムとは、複数のファイルを 1 個のファイル (アーカイブ) に格納したり、そうしたアーカイブを操作したりするためのプログラムです。 アーカイブは、通常ファイルであってもよく、デバイスでもかまいません (後者の一例がテープドライブであり、このプログラムの名前は、そこから来ています。 すなわち、tape archiver ということです)。 そうしたファイルやデバイスは、ローカルマシンにあってもよく、リモートマシンにあってもかまいません。
オプション形式¶
GNU tar のオプションは、3 つの異なる形式で指定できます。伝統的なスタイル では、最初の引数は、オプション文字の集まりであり、それに続くすべての引数は、 そうしたオプションが引数を要求する場合に、その引数になります。 なお、そうした引数は、オプション文字と同じ順番で読み込まれます。 すべてのオプションの処理が終わった後で、コマンドラインに残っている単語があれば、 それは、オプションとは関係のない引数として扱われます。 すなわち、ファイルやアーカイブメンバーの名前です。
たとえば、c オプションは、アーカイブの作成を指示し、v オプションは、 やっていることを表示するように要求し、f オプションは、 操作対象のアーカイブ名を引数に取ります。 伝統的なスタイルで書かれた次のコマンドは、ディレクトリ /etc のすべてのファイルをアーカイブファイル etc.tar に格納し、どんなファイルをアーカイブに入れたか、詳しいリストを表示するように tar に指示しています。
tar cfv etc.tar /etc
UNIX スタイル、すなわち短いオプション形式では、 他のコマンドラインユーティリティと同様に、各オプション文字には、 1 個のダッシュがその前に付きます。オプションが引数を取る場合は、引数はその後に続きます。 引数は、コマンドライン上の独立した単語としてオプションとの間にスペースを置いて指定してもよく、 スペースを挟まずオプションに直接続けてもかまいません。ただし、オプションの引数が任意である (訳注: あることも、ないこともある) 場合は、その引数は -g/tmp/snar.db のように、オプション文字の後にスペースなしで続けなければなりません。
引数をとらないオプションは、1 個のダッシュの後に何個でもまとめて指定できます。 たとえば、-vkp のようにです。引数を (必須であれ任意であれ) 取るオプションがあったら、ひとつにまとめたオプションの最後に置きます。 -vkpf a.tar がその一例です。
上で例示したコマンドは、 短いオプション形式で書けば、以下のようになります。
tar -cvf etc.tar /etcまたは
tar -c -v -f etc.tar /etc
GNU スタイル、すなわち長いオプション形式では、 各オプションは、2 個のダッシュに続く意味を持った名前であり、 小文字とダッシュから構成されています。使用に当たって、長いオプションは、 曖昧さを生じないかぎり、最初の数文字に短縮できます。長いオプションに対する引数は、 そのオプションの直後にコマンドライン上の独立した単語として (訳注: すなわち、間にスペースを置いて) 指定するか、あるいは、オプションとの間を等号 (=) で区切り、等号の前後にはスペースを入れずに指定します。 指定するかしないかが任意の引数では、必ず後者の書式を使わなければなりません。
上記のコマンド例をこの形式で書くには、次のようないくつかの方法があります。
tar --create --file etc.tar --verbose /etcまたは (オプションをいくつか短縮して)、
tar --cre --file=etc.tar --verb /etc
オプションは、3 種の形式すべてを混ぜて使うことができますが、 伝統的なオプションを混ぜて使うのはお勧めできません。
操作モード¶
以下に列挙したオプションは、GNU tar にかくかくしかじかの操作をせよと指定するものです。 指定するのは、この内のただ 1 つでなければなりません。 オプションの引数ではない引数がどんな意味になるかは、要求した操作モード次第です。
- -A, --catenate, --concatenate
- アーカイブを別のアーカイブの末尾に追加します。
引数は追加するアーカイブの名前と見なされます。すべての追加するアーカイブは、
追加される側のアーカイブ
(訳注: これは -f
オプションの引数で指定します)
と同じ形式でなければなりません。そうでないと、作成されたアーカイブが、GNU
以外の tar
の実装で使えなくなる可能性があります。
なお、注意すべき点として、2
個以上のアーカイブを引数として指定した場合に、1
番目のアーカイブ以外のアーカイブのメンバーが、作成されたアーカイブでアクセスできるのは、
-i (--ignore-zeros)
オプションを使用した場合だけです。
圧縮したアーカイブの結合はできません。
- -c, --create
- 新しいアーカイブを作成します。 引数はアーカイブに入れるファイルの名前です (訳注: 作成するアーカイブファイルの名前は、-f オプションの引数で指定します)。 --no-recursion オプションが指定されないかぎり、ディレクトリは再帰的にアーカイブされます。
- -d, --diff, --compare
- アーカイブとファイルシステムの間に相違があるかどうかを調べます。 引数は任意だが、指定するなら、比較したいアーカイブのメンバーです。 指定しない場合は、カレントワーキングディレクトリを指定したものと見なされます。 (訳注: info マニュアルの説明は少し違い、「メンバーを 1 つも指定しない場合、 tar は全アーカイブを比較する」となっています。)
- --delete
- アーカイブから削除します。引数はアーカイブから削除するメンバーの名前です。少なくとも
1
つは引数を指定しなければなりません。
このオプションは圧縮したアーカイブには使えません。 これと等価な短いオプションはありません。
- -r, --append
- アーカイブの最後にファイルを追加します。引数の意味は、-c (--create) と同じです。
- -t, --list
- アーカイブの内容一覧を表示します。引数は任意です。 引数が指定された場合は、表示すべきメンバーの名前となります。
- --test-label
- アーカイブのボリュームラベルをテストして終了します。
引数を指定せずに使用すると、ボリュームラベルを
(もしあれば)
表示し、ステータス
0 で終了します。1
つ以上のコマンドライン引数を指定すると、tar
はボリュームラベルを各引数と比較します。引数にマッチするラベルがあった場合は、コード
0
で終了し、なかった場合は、
コード 1
で終了します。その際、-v
(--verbose)
オプションが一緒に指定されないかぎり、出力には何も表示されません。
これと等価な短いオプションはありません。
- -u, --update
- アーカイブ内の同名のコピーより新しいファイルだけを追加します。 引数の意味は、-c や -r オプションと同じです。 気を付けてほしいのですが、新しいファイルが、古いアーカイブコピーに置き換わるわけではありません。 そうではなくて、アーカイブの末尾に追加されるのです。 従って、作成されたアーカイブには、 同じファイルの様々なバージョンに当たる、同じ名前の複数のメンバーが含まれることがあります。
- -x, --extract, --get
- アーカイブからファイルを抽出します。引数は任意です。 引数が指定された場合、抽出するアーカイブメンバーの名前となります。
- --show-defaults
- tar のいくつかのオプションについて組み込みのデフォルトを表示して、終了します。 引数は指定できません。
- -?, --help
- 簡単なオプションのサマリーを表示して、終了します。 引数は指定できません。
- --usage
- 指定可能なオプションのリストを表示して、終了します。 引数は指定できません。
- --version
- プログラムのバージョンと著作権情報を表示して終了します。
オプション¶
操作の調節¶
- --check-device
- インクリメンタルアーカイブを作成する際に、デバイス番号をチェックします (デフォルト)。
- -g, --listed-incremental=FILE
- 新 GNU
形式のインクリメンタルバックアップを取り扱います。
FILE
はスナップショットファイルの名前です
(訳注:
このオプションの引数
FILE
の指定は必須です)。tar
はそこに補助情報を記録しておき、その情報を使って、前回のインクリメンタルダンプの後で、
どのファイルが変更され、従って、再度ダンプしなければならないかを判断します。
アーカイブの作成時に
FILE
が存在しない場合は、FILE
が作られ、すべてのファイルが作成されるアーカイブに格納されることになります
(これが level 0
のダンプである)。N
が 0 ではない level N
のインクリメンタルアーカイブを作成するには、level
N-1
のアーカイブを作成したときに出来たスナップショットファイルのコピーを作って、それを
FILE
として使用します。
アーカイブの内容表示やメンバーの抽出の際には、FILE の中身が実際に調べられるわけではありません。tar の文法上 --listed-incremental は引数を取ることになっているので、FILE の指定が必要なだけなのです。それ故、FILE として /dev/null を使うのは、常套手段です。
- --hole-detection=METHOD
- スパースファイル (sparse file) の穴 (hole) の検出に METHOD を使います。このオプションは、--sparse を暗黙裡に設定します。METHOD に指定できる値は、seek と raw です。デフォルトは seek であり、使用できない場合は raw を使います。
- -G, --incremental
- 旧 GNU 形式のインクリメンタルバックアップを取り扱います。
- --ignore-failed-read
- 読み込み不能なファイルがあっても、ゼロ以外の返り値で終了しません。
- --level=NUMBER
- 作成するリスト化インクリメンタルアーカイブ (訳注: すなわち、新 GNU 形式のインクリメンタルアーカイブ) のダンプレベルを設定します。 現在のところ、--level=0 のみが意味を持ちます。 これを指定すると、tar はダンプする前にスナップショットファイルをサイズ 0 に短縮し、 強制的にレベル 0 のダンプにします。
- -n, --seek
- アーカイブがシーク (seek) 可能であると見なします。通常、tar は、 アーカイブがシーク可能であるか否かを自動的に判断します。 このオプションは、そうした判断がうまく行かない場合に使うためのものです。 このオプションは、アーカイブを読み込むためにオープンしている場合にのみ効果があります (たとえば、 --list または --extract オプションが指定されている場合)。
- --no-check-device
- インクリメンタルアーカイブを作成する際に、デバイス番号をチェックしません。
- --no-seek
- アーカイブがシーク可能でないと見なします。
- --occurrence[=N]
- アーカイブ中の各ファイルについて、N 番目に現れるものだけを処理の対象にします。 このオプションは、サブコマンド --delete, --diff, --extract, --list の 1 つとともに使用し、 しかも、ファイルのリストを、コマンドライン上、または -T オプションで指定している場合にのみ、有効です。オプション引き数 N の指定は任意ですが、デフォルトでは 1 になっています。(訳注: -r や -u オプションを使った場合、アーカイブ中に同名のメンバーが複数存在することがります。 そうした場合に、何番目のメンバーを抽出などの対象にするかを指名するのです。)
- --restrict
- 有害かもしれないいくつかのオプションを無効化します。
- --sparse-version=MAJOR[.MINOR]
- スパースファイルで使用するスパースフォーマットのバージョンを指定します。 このオプションは --sparse を暗黙裡に設定します。 引数に指定できる値は、 0.0, 0.1, 1.0 のいずれかです。 スパースフォーマットについての詳しい議論については、 GNU Tar Manual, appendix D, "Sparse Formats" を見てください。info リーダーを使用する場合は、コマンド info tar 'Sparse Formats' で読むことができます。
- -S, --sparse
- スパースファイルを効率的に取り扱います。ファイルシステム上のファイルの中には、 実際の書き込みが一度も行われていないセグメントを含むものがあります (そうしたものが DBM のようなシステムで作られたデータベースファイルだったりするのは、よくあることです)。 このオプションを指定すると、tar は、ファイルをアーカイブに入れる前に、 それがスパースファイルかどうかを判断しようとします。 そして、もしそうなら、ファイル中の空っぽの部分をダンプしないことによって、 生成するアーカイブのサイズを小さくします。
上書きの制御¶
以下のオプションは、アーカイブからファイルを抽出することによって、 ディスク上にある同名ファイルの上書きが生じる場合の tar の挙動を制御します。
- -k, --keep-old-files
- 抽出時に、既存のファイルを置き換えません。
- --keep-newer-files
- 既存のファイルがアーカイブコピーより新しい場合、それを置き換えません。
- --keep-directory-symlink
- 抽出する際に、ディレクトリを指す同名のシンボリックリンクがすでに存在している場合は、 それをアーカイブ中の実ディレクトリで置き換えません。(訳注: その場合は、そのシンボリックの参照先にアーカイブ中のディレクトリの中身を展開します。 このオプションを指定しないデフォルトでは、まずシンボリックリンクを消去し、 それからディレクトリの抽出を行うことになります。)
- --no-overwrite-dir
- 既存のディレクトリのメタデータを変更しません。
- --one-top-level[=DIR]
- すべてのファイルを DIR に抽出します。引数なしで使用すると、 アーカイブのベースネームにちなんだ名前のサブディレクトリに抽出することになります (詳しく言うと、アーカイブのベースネームから --auto-compress で認識される標準的な圧縮ファイルの拡張子を取り去ったもの)。
- --overwrite
- 抽出時に、既存ファイルを上書きします。
- --overwrite-dir
- 抽出時に、既存ディレクトリのメタデータを上書きします (デフォルト)。
- --recursive-unlink
- ディレクトリを抽出する前に、同名のディレクトリにあるすべてのファイルを再帰的に削除します。
- --remove-files
- ファイルをアーカイブに追加した後で、ディスクからファイルを削除します。
- --skip-old-files
- 抽出時に、既存のファイルを上書きせず、何のメッセージも出さずにスキップします (訳注: なお、--keep-old-files と違い、こちらは返り値がエラーになりません)。
- -U, --unlink-first
- 抽出する際に、上書きするファイルをまず削除します。
- -W, --verify
- アーカイブを書き込んだ後で照合します。
出力ストリームに関する選択¶
- --ignore-command-error
- サブプロセスの終了コードを無視します。
- --no-ignore-command-error
- 子プロセスの 0 以外の終了コードをエラーとして扱います (デフォルト)。
- -O, --to-stdout
- ファイルを標準出力に抽出します。
- --to-command=COMMAND
- 抽出したファイルをパイプで COMMAND に渡します。 このオプションの引数は、外部プログラムのパス名であり、 コマンドライン引数を付けて指定することもできます。外部プログラムが起動されると、 抽出されたファイルの内容が、そのプログラムの標準入力に渡されます。また、 追加的なデータが、以下の環境変数を通して外部プログラムに渡されることになります。
- TAR_FILETYPE
- ファイルのタイプ。1
文字からなり、以下の意味があります。
f 通常ファイル d ディレクトリ l シンボリックリンク h ハードリンク b ブロックデバイス c キャラクタデバイス
現在のところサポートされているのは、通常ファイルだけです。
- TAR_MODE
- ファイルの許可属性。8 進数。
- TAR_FILENAME
- ファイル名。
- TAR_REALNAME
- アーカイブに格納されているファイル名。
- TAR_UNAME
- ファイルの所有者名。
- TAR_GNAME
- ファイルの所有グループ名。
- TAR_ATIME
- 最終アクセス日時。これは、the Epoch からの秒数を表す 10 進数です。 アーカイブの日時がナノ秒の精度の場合、タイムスタンプの小数点の後ろにナノ秒の部分が付きます。
- TAR_MTIME
- 最終更新日時。
- TAR_CTIME
- 最終ステータス変更日時。
- TAR_SIZE
- ファイルのサイズ。
- TAR_UID
- ファイルの所有者の UID。
- TAR_GID
- ファイルの所有グループの GID。
さらに、以下の環境変数に tar の操作モードや処理対象のアーカイブについての情報が含まれています。
- TAR_VERSION
- GNU tar のバージョン番号。
- TAR_ARCHIVE
- tar が処理中のアーカイブの名前。
- TAR_BLOCKING_FACTOR
- 現在のブロッキング係数。すなわち、1 レコードを構成する 512 バイトのブロック数。
- TAR_VOLUME
- tar が処理中のボリューム番号 (複数ボリュームのアーカイブを読み込んでいる場合に設定されます)。
- TAR_FORMAT
- 処理しているアーカイブのフォーマット。gnu, oldgnu, posix, ustar, v7 の内の 1 つ。
- TAR_SUBCOMMAND
- tar が実行中の操作を表す短いオプション (前に 1 個のダッシュが付いたもの)。
ファイル属性の操作¶
- --atime-preserve[=METHOD]
- ダンプの対象にした元ファイルのアクセス日時を変更しません。 その方法には、ファイルを読み込んだ後でアクセス日時を元に戻すやり方 (METHOD=replace、デフォルト) と、最初からアクセス日時を変更しないやり方 (METHOD=system) の二つがあります。
- --delay-directory-restore
- 抽出したディレクトリの更新日時や許可属性の決定を、抽出の最後まで遅らせます。 メンバーの順番が通常とは違っているアーカイブから抽出する際には、このオプションを使用するとよいでしょう。 (訳注: info tar の "Directory Modification Times and Permissions" を参照。)
- --group=NAME[:GID]
- アーカイブに入れるファイルの所有グループを
NAME にします。 GID
まで指定しない場合、NAME
はグループ名でも、GID
番号でもかまいません。
その場合、指定しない方
(GID、またはグループ名)
は、使用中のホストのグループデータベースから推測されることになります。
--group-map=FILE と一緒に使われたときは、 所有グループが FILE のリストに載っていないファイルに対してのみ効果があります。
- --group-map=FILE
- グループ変換マップを
FILE
から読み込みます。空行は無視します。
コメントは #
で始まり、行末まで続く。FILE
の空行以外の各行では、1
つのグループ変換を定義します。各行は、任意の数のホワイトスペース
(訳注: 空白やタブ)
で区切られた 2
つのフィールドから構成されていなければなりません。
すなわち、次のような形です:
OLDGRP NEWGRP[:NEWGID]
OLDGRP は有効なグループ名か、+ を前に付けた GID です。 NEWGID を指定しない場合は、NEWGRP の方も、やはり有効なグループ名か、 +GID でなければなりません。NEWGID まで指定した場合は、NEWGRP と NEWGID のどちらも、システムのグループデータベースに載っている必要はありません。
つまるところ、所有グループ OLDGRP の各入力ファイルが、所有グループを NEWGRP、GID を NEWGID としてアーカイブに格納されることになります。
- --mode=CHANGES
- アーカイブに入れるファイルの許可属性を、シンボルによる指定で CHANGES にします (訳注: 実際には 8 進数による指定も可能)。
- --mtime=DATE-OR-FILE
- アーカイブに入れるファイルの mtime を設定します。DATE-OR-FILE は、 ほぼ任意のフォーマットの日付/時刻、または既存ファイルの名前です。 後者の場合、そのファイルの mtime が使われます。
- -m, --touch
- ファイルの更新日時 (mtime) を抽出しません。
- --no-delay-directory-restore
- 前に指定した --delay-directory-restore オプションの効果を取り消します。
- --no-same-owner
- 実行ユーザ自身の資格でファイルを抽出します (一般ユーザのデフォルト)。
- --no-same-permissions
- アーカイブから許可属性を抽出する際、実行ユーザの umask を適用します (一般ユーザのデフォルト)。
- --numeric-owner
- ユーザ/グループ名に常に番号を使います。
- --owner=NAME[:UID]
- アーカイブに入れるファイルの所有者を
NAME にします。 UID
まで指定しない場合、NAME
はユーザ名でも、UID
番号でもかまいません。
その場合、指定しない方
(UID、またはユーザ名)
は、使用中のホストのユーザデータベースから推測されることになります。
--owner-map=FILE と一緒に使われたときは、 所有者が FILE のリストに載っていないファイルに対してのみ効果があります。
- --owner-map=FILE
- 所有者変換マップを
FILE
から読み込みます。空行は無視します。
コメントは #
で始まり、行末まで続きます。FILE
の空行以外の各行では、1
つの UID
変換を定義する。各行は、任意の数のホワイトスペース
(訳注: 空白やタブ)
で区切られた 2
つのフィールドから構成されていなければなりません。
すなわち、次のような形です:
OLDUSR NEWUSR[:NEWUID]
OLDUSR は有効なユーザ名か、+ を前に付けた UID です。 NEWUID を指定しない場合は、NEWUSR の方も、やはり有効なユーザ名か、 +UID でなければなりません。NEWUID まで指定した場合は、NEWUSR と NEWUID のどちらも、システムのユーザデータベースに載っている必要はありません。
つまるところ、所有者 OLDUSR の各入力ファイルが、所有者名を NEWUSR、UID を NEWUID としてアーカイブに格納されることになります。
- -p, --preserve-permissions, --same-permissions
- ファイルの許可属性に関する情報を抽出します (スーパーユーザのデフォルト)。
- --same-owner
- アーカイブ中のものと同じ所有者属性を付けて、ファイルを抽出しようと試みます (スーパーユーザのデフォルト)。
- -s, --preserve-order, --same-order
- 引数である抽出すべきファイルの名前が、アーカイブ中と同じ順番でソートされていると tar に知らせます。(訳注: info tar の "Same Order" と "Option Summary" に詳しい説明があります。それがわかりやすい。)
- --sort=ORDER
- アーカイブを作成する際に、ディレクトリエントリを
ORDER
に基づいてソートします。
ORDER は none, name, inode
のいずれかです。
デフォルトは --sort=none であり、 オペレーティングシステムが返すのと同じ順番でメンバーをアーカイブします。
--sort=name は、作成されるアーカイブのメンバーの並び順を一定で、再現可能なものにします。
--sort=inode を使うと、アーカイブを作成する際のディスクシークの回数を減らし、 そうすることで、実行時間をかなりスピードアップすることができます。 このソート順は、下層で動いているシステムが必要な情報を提供する場合にのみ使用できます。
拡張ファイル属性¶
- --acls
- POSIX ACL のサポートを有効にします。
- --no-acls
- POSIX ACL のサポートを無効にします。
- --selinux
- SELinux コンテキストのサポートを有効にします。
- --no-selinux
- SELinux コンテキストのサポートを無効にします。
- --xattrs
- 拡張属性のサポートを有効にします。
- --no-xattrs
- 拡張属性のサポートを無効にします。
- --xattrs-exclude=PATTERN
- xattr のキー (訳注: 拡張属性の名前) について、格納や抽出から除外するパターンを指定します。PATTERN は POSIX の正規表現です。たとえば、--xattrs-exclude='^user.' と指定すれば、名前空間 user の属性を除外することになります。
- --xattrs-include=PATTERN
- xattr のキーについて、格納や抽出時にインクルードするパターンを指定します。 PATTERN は POSIX の正規表現です。
デバイスの選択と交換¶
- -f, --file=ARCHIVE
- アーカイブファイルまたはアーカイブデバイスとして
ARCHIVE を使用します。
このオプションを指定しない場合、tar
は、まず環境変数 `TAPE'
を調べ、
設定されていれば、その値をアーカイブ名として使用します。
設定されていない場合は、コンパイル時に埋め込まれたデフォルトを使います。
デフォルトの値は
--show-defaults
オプションを使って調べることができます。また、tar
--help
の出力の末尾を見てもわかります。
アーカイブ名にコロンが含まれている場合、それは、リモートマシンのファイルかデバイスです。 コロンの前の部分はマシン名または IP アドレスと見なされ、コロンの後の部分はファイルまたはデバイスのパス名と見なされます。 例は以下のとおりです:
--file=remotehost:/dev/sr0
そうしたければ、ホスト名の前にユーザ名を付けることもできます。その場合は、両者の間に @ 記号を置きます。
デフォルトでは、リモートホストは rsh(1) コマンドを使ってアクセスされます。 最近では、代わりに ssh(1) を使うのが一般的です。 そうしたい場合は、以下のコマンドラインオプションを指定します:
--rsh-command=/usr/bin/ssh
リモートマシンには rmt(8) コマンドがインストールされていなければなりません。 そのパス名が tar のデフォルトと一致しない場合は、 --rmt-command オプションを使って正しいパス名を tar に知らせることができます。
- --force-local
- アーカイブファイル名にコロンが含まれていてもローカルファイルとして扱います。
- -F, --info-script=COMMAND, --new-volume-script=COMMAND
- 各テープの終わりに COMMAND を実行します (-M が暗黙裡に設定されます)。 コマンドには引数を含めることができます。コマンドは起動されるとき、tar の環境変数に加えて、以下の環境変数を継承します。
- TAR_VERSION
- GNU tar のバージョン番号。
- TAR_ARCHIVE
- tar が処理中のアーカイブの名前。
- TAR_BLOCKING_FACTOR
- 現在のブロッキング係数。すなわち、1 レコードを構成する 512 バイトのブロック数。
- TAR_VOLUME
- tar が処理中のボリューム番号 (複数ボリュームのアーカイブを読み込んでいる場合に設定されます)。
- TAR_FORMAT
- 処理しているアーカイブのフォーマット。gnu, oldgnu, posix, ustar, v7 の内の 1 つ。
- TAR_SUBCOMMAND
- tar が実行中の操作を表す短いオプション (前に 1 個のダッシュが付いたもの)。
- TAR_FD
- 新しいボリューム名を tar に伝えるために使うことができるファイルディスクリプタ。
指定された info script が失敗した場合、tar は終了します。成功した場合は、次のボリュームの書き込みを始めます。
- -L, --tape-length=N
- Nx1024
バイトを書き込んだ後、テープを入れ替えます。
N
にはサイズを表す接尾辞
(下記の「サイズ接尾辞」を参照)
を付けることができます。そうした接尾辞は
1024
の代わりに使う乗数を指定しています。
このオプションは -M を暗黙裡に設定します。
- -M, --multi-volume
- マルチボリュームアーカイブの作成/内容表示/抽出を行います。
- --rmt-command=COMMAND
- リモートアーカイブにアクセスする際に、rmt の代わりに COMMAND を使います。 上記の -f オプションの説明を参照してください。
- --rsh-command=COMMAND
- リモートアーカイブにアクセスする際に、rsh の代わりに COMMAND を使います。 上記の -f オプションの説明を参照してください。
- --volno-file=FILE
- このオプションを --multi-volume とともに使うと、 tar は、 今マルチボリュームアーカイブのどのボリュームを処理しているかを、FILE に記録することになります。
レコードとブロック (Device blocking)¶
- -b, --blocking-factor=BLOCKS
- レコードサイズを BLOCKSx512 バイトにします (訳注: BLOCKS は 1 レコードを構成する 512 バイトのブロックの数、すなわち、ブロッキング係数。たいていの場合、デフォルトは 20 になっています)。
- -B, --read-full-records
- 内容表示や抽出をする際、ファイルの末尾を示すマーカーを含むレコードが、1 レコードの大きさに満たない不完全な入力レコードであっても許容します。 (訳注: tar はアーカイブの読み書きをレコード単位で行います。このオプションは、1 レコードの大きさに達しない入力に対する処理を指定しています。info tar Reading を参照してください)。
- -i, --ignore-zeros
- アーカイブ中の 0 ばかりからなるブロックを無視します。通常、0 で埋められた 512 バイトブロックが 2 個連続すると、それはファイルの末尾 (EOF) を意味し、これに出会うと tar は読み込みを止めます。 このオプションを指定すると、0 のブロックに出会っても読み込みを続けるので、 -A オプションを付けて作成したアーカイブを読み込むとき役に立ちます。
- --record-size=NUMBER
- レコードサイズを設定します。NUMBER は 1 レコードあたりのバイト数であり、512 の倍数でなければなりません。 サイズ接尾辞を付けることもでき、たとえば、--record-size=10K は 10 キロバイトです。有効な接尾辞のリストについては、 サブセクション「サイズ接尾辞」を見てください。
アーカイブ形式の選択¶
- -H, --format=FORMAT
- 指定した形式のアーカイブを作成します。 有効なフォーマットは以下のとおりです:
- gnu
- GNU tar 1.13.x 形式
- oldgnu
- GNU tar 1.12 以前の GNU 形式
- pax, posix
- POSIX 1003.1-2001 (pax) 形式
- ustar
- POSIX 1003.1-1988 (ustar) 形式
- v7
- 古い V7 tar 形式
- --old-archive, --portability
- --format=v7 と同じ。
- --pax-option=keyword[[:]=value][,keyword[[:]=value]]...
- (-H pax で) PAX アーカイブを作成する際の pax のキーワードを調整する。このオプションは pax(1) ユーティリティの -o オプションと等価です。
- --posix
- --format=posix と同じ。
- -V, --label=TEXT
- TEXT というボリューム名 (訳注: ボリュームラベルとも言う) を付けて、アーカイブを作成する。内容表示や抽出をする際にこのオプションを指定した場合は、TEXT をボリューム名の glob パターンとして使用します。
圧縮オプション¶
- -a, --auto-compress
- 圧縮プログラムを決定するためにアーカイブ拡張子を使用します。
- -I, --use-compress-program=COMMAND
- データを COMMAND でフィルタする。コマンドは、伸長するための -d オプションを解するものでなければなりません。 引数にはコマンドラインオプションも含めることができます。
- -j, --bzip2
- アーカイブを bzip2(1) でフィルタします。
- -J, --xz
- アーカイブを xz(1) でフィルタします。
- --lzip
- アーカイブを lzip(1) でフィルタします。
- --lzma
- アーカイブを lzma(1) でフィルタします。
- --lzop
- アーカイブを lzop(1) でフィルタします。
- --no-auto-compress
- 圧縮プログラムを決定するためにアーカイブ拡張子を使用しません。
- -z, --gzip, --gunzip, --ungzip
- アーカイブを gzip(1) でフィルタします。
- -Z, --compress, --uncompress
- アーカイブを compress(1) でフィルタします。
- --zstd
- アーカイブを zstd(1) でフィルタします。
ローカルファイルの選択¶
- --add-file=FILE
- FILE をアーカイブに追加します (ファイル名がダッシュで始まる場合に便利です)。
- --backup[=CONTROL]
- 上書きや削除をする前にバックアップを行います。引数 CONTROL を指定すれば、それがバックアップのやり方を決めます。有効な値は以下のとおりです。 (訳注: このオプションは、アーカイブの作成 (-c)、抽出 (-x)、どちらでも使えるが、-A, -r, -u, --delete では無効のようです。)
- none, off
- バックアップを全く作成しません。
- t, numbered
- 番号付きのバックアップを作成します。
- nil, existing
- 番号付きのバックアップが存在すれば、番号付きのバックアップを、 存在しなければ、単純形式のバックアップを作成します。
- never, simple
- 常に単純形式のバックアップを行います。
CONTROL が指定されない場合、環境変数 VERSION_CONTROL から値を取得します。それも指定されていない場合は、existing が指定されているものと見なされます。
- -C, --directory=DIR
- 何らかの操作を行う前に、ディレクトリ DIR に移動します。 このオプションは順番を意識します。すなわち、その後に続くすべてのオプションに影響を及ぼします。
- --exclude=PATTERN
- glob(3) スタイルのワイルドカードパターン PATTERN にマッチするファイルを除外します (訳注: つまり、PATTERN の指定にシェル式のワイルドーカードが使えるということです)。
- --exclude-backups
- バックアップファイルとロックファイルを除外します。
- --exclude-caches
- CACHEDIR.TAG という名前のファイルを含むディレクトリの中身を除外します。 ただし、タグファイル自体は除外しません。(訳注: CACHEDIR.TAG とそれが含むべき内容については、 <http://www.brynosaurus.com/cachedir/spec.html>、または <http://bford.info/cachedir/spec.html> を見てください。)
- --exclude-caches-all
- CACHEDIR.TAG という名前のファイルを含むディレクトリとタグファイル自体を除外します。
- --exclude-caches-under
- CACHEDIR.TAG という名前のファイルを含むディレクトリ以下のすべてを除外します (訳注: ただし、そのディレクトリ自体は除外しません)。
- --exclude-ignore=FILE
- ディレクトリをダンプする前に、FILE というファイルがそこに含まれているかを調べます。 含まれている場合は、そのファイルから除外パターンを読み込みます。 このパターンは、そのディレクトリにのみ影響します。
- --exclude-ignore-recursive=FILE
- --exclude-ignore と同様ですが、FILE から読み込んだパターンは、そのディレクトリとすべてのサブディレクトリに影響を及ぼします。
- --exclude-tag=FILE
- FILE というファイルを含むディレクトリの中身を除外します。ただし、 FILE 自体は除外しません。
- --exclude-tag-all=FILE
- FILE というファイルを含むディレクトリを除外します。
- --exclude-tag-under=FILE
- FILE というファイルを含むディレクトリ以下のすべてを除外します (訳注: ただし、そのディレクトリ自体は除外しません)。
- --exclude-vcs
- バージョン管理システムのディレクトリを除外します。
- --exclude-vcs-ignores
- VCS 独自の除外ファイルからパターンを読み込み、それにマッチするファイルを除外します。 サポートされているファイルは、 .cvsignore, .gitignore, .bzrignore, .hgignore です。
- -h, --dereference
- シンボリックリンクを辿り、それが指しているファイルをアーカイブに入れます (訳注: シンボリックリンクが指している実ファイルが、 同一アーカイブに収録されるときは、そのハードリンクを、収録されないときは実ファイルを、 シンボリックリンクのファイル名でアーカイブに入れるようです)。
- --hard-dereference
- ハードリンクを辿り、それが指しているファイルをアーカイブに入れます (訳注: ハードリンクとしてではなく、独立したファイルとしてアーカイブに入れます)。
- -K, --starting-file=MEMBER
- アーカイブ内の指定されたメンバーから (抽出や内容表示を) 開始します。
- --newer-mtime=DATE
- DATE 以降にデータが変更されたファイルを処理の対象にします。 DATE が / または . で始まる場合は、 ファイル名と見なされ、そのファイルの mtime が日付として使われます。
- --no-null
- これより前に指定された --null オプションの効果を無効にします。
- --no-recursion
- ディレクトリにおいて自動的な下降をしないようにします。
- --no-unquote
- 指定された入力ファイル名やメンバー名中の、バックスラッシュでクォートされたシーケンスを解釈・変換しません (訳注: すなわち、\t, \n, \b などをタブ、改行などとしてではなく、文字通り \t, \n, \b として扱う。なお、このオプションはコマンドライン上の位置が意味を持ちます)。
- --no-verbatim-files-from
- ファイルリストから読み込んだ各行を、あたかもコマンドラインから打ち込まれたかのように処理します。
すなわち、前後の空白を除去した後の文字列がダッシュで始まる場合は、tar
のコマンドラインオプションと見なします。
これはデフォルトの動作です。この --no-verbatim-files-from オプションがあるのは、--verbatim-files-from オプションを指定した後で動作を元に戻すためです。
このオプションは指定する位置が意味を持ちます。 すなわち、コマンドラインでこのオプションより後に指定されるすべての --files-from オプションに影響し、--verbatim-files-from オプションが現れるか、コマンドラインの末尾に達するまで効果が続きます。
--no-null オプションを指定すると、このオプションが暗黙裡に設定されます。
- --null
- 後に続く -T
オプションに対して、null
で終端された名前を文字通りに読み込むように指示します
(つまり、-T
オプションでダッシュで始まる名前の特別扱いをしなくなります)。
--verbatim-files-from も参照してください。
- -N, --newer=DATE, --after-date=DATE
- DATE より新しいファイルのみを格納します。 DATE が / または . で始まっている場合は、 ファイル名と見なされ、そのファイルの mtime が日付として使われます。
- --one-file-system
- アーカイブを作成する際に、ローカルファイルシステムに限定します。
- -P, --absolute-names
- アーカイブを作成する際に、ファイル名の先頭のスラッシュを除去しません。
- --recursion
- ディレクトリを再帰的に辿ります (デフォルト)。
- --suffix=STRING
- 削除する前にバックアップを作り、拡張子を通常のものから変更します。 環境変数 SIMPLE_BACKUP_SUFFIX によって変更されていないかぎり、 デフォルトの拡張子は ~ です。
- -T, --files-from=FILE
- アーカイブから抽出する名前やアーカイブに格納する名前を
FILE
から読み込みます。
別の指定がないかぎり、FILE の内容は、ASCII LF で区切られた名前のリストでなければなりません (つまり、1 行に 1 個の名前です)。 読み込まれた名前は、コマンドラインの引数と同じやり方で処理されます。 すなわち、引用符が除去され、単語に分割され、そして、ダッシュ (-) で始まる文字列があれば、tar のコマンドラインオプションとして処理されます。
この動作が望ましくない場合は、 --verbatim-files-from オプションでやめさせることができます。
--null オプションを指定すると、tar は FILE 中の名前の区切りを LF ではなく、ASCII NUL 文字にします。 これはリストが find(1) の -print0 アクションで生成されている場合に役に立ちます。
- --unquote
- 指定された入力ファイル名やメンバー名中の、バックスラッシュでクォートされたシーケンスを解釈・変換します (デフォルト)。(訳注: すなわち、\t, \n, \b などをタブ、改行などとして扱うということです。 なお、このオプションはコマンドライン上の位置が意味を持ちます。)
- --verbatim-files-from
- ファイルリストから読み込んだ各行がダッシュで始まっていても、フィル名として扱います。
ファイルリストの取得には、--files-from
(-T)
オプションを使用します。tar
のデフォルトの動作は、ファイルリストから読み込んだ名前を、
あたかもコマンドラインから打ち込まれたかのように処理することです。
すなわち、ダッシュで始まっている名前があれば、
tar
のオプションと見なします。この
--verbatim-files-from
オプションは、そうした動作をしないようにします。
このオプションは、コマンドラインでこれより後に指定されるすべての --files-from オプションに影響を与えます。 このオプションの効果は、 --no-verbatim-files-from オプションによって元に戻すことができます。
--null オプションを指定すると、このオプションが暗黙裡に設定されます。
--add-file も参照してください。
- -X, --exclude-from=FILE
- FILE にリストされたパターンにマッチするファイルを除外します。
ファイル名の変更¶
- --strip-components=NUMBER
- 抽出時にファイル名の先頭から NUMBER 個の構成要素 (訳注: 要するに、NUMBER 個のディレクトリ部分) を取り去ります。
- --transform=EXPRESSION, --xform=EXPRESSION
- sed の置換表現 EXPRESSION をファイル名の変更に使います。
ファイル名のマッチングに関するオプション¶
これらのオプションは除外 (exclude) パターンと包摂 (include) パターンの両方に影響します。
- --anchored
- パターンはファイル名の先頭にマッチします。
- --ignore-case
- 大文字小文字を区別しません。
- --no-anchored
- パターンはどの / の後にでもマッチします (除外時のデフォルト)。
- --no-ignore-case
- 大文字小文字を区別してマッチングを行います (デフォルト)。
- --no-wildcards
- パターンの文字列を文字通りに解してマッチングを行います (訳注: これはワイルドカード文字をただの文字として扱うということです。\t, \n などを文字通りに読む方は、--no-unquote を使います)。
- --no-wildcards-match-slash
- ワイルドカードは / にマッチしません。
- --wildcards
- ワイルドカードを使います (除外時のデフォルト)。
- --wildcards-match-slash
- ワイルドカードは / にマッチします (除外時のデフォルト)。
情報出力¶
- --checkpoint[=N]
- N レコード (デフォルトは 10) ごとに進捗メッセージを表示します。
- --checkpoint-action=ACTION
- チェックポイントごとに ACTION を実行します。
- --clamp-mtime
- --mtime で指定された日時より新しいファイルに対してのみ、日時を設定します。
- --full-time
- 高精度でファイルの日時を表示します (訳注: tar 1.32 では秒まで。-v オプションが必要)。
- --index-file=FILE
- 詳細出力を FILE に書き出します。
- -l, --check-links
- ハードリンクのすべてをダンプしていない場合に、その旨メッセージを出します。
- --no-quote-chars=STRING
- STRING に列挙された文字を、表示するときにクォートする文字のリストから外します (訳注: リストから外せるのは、--quote-chars によって追加された文字だけであり、 デフォルトでクォートすることになっている文字を外せるわけではありません。次の項目ともども info tar を参照してください)。
- --quote-chars=STRING
- STRING に列挙された文字を、表示するときにクォートする文字のリストに追加します。
- --quoting-style=STYLE
- ファイル名やメンバー名を表示するときのクォート形式を設定します。 STYLE に指定できる値は以下のとおりです。 literal, shell, shell-always, c, c-maybe, escape, locale, clocale.
- -R, --block-number
- 各メッセージにアーカイブ中のブロック番号を付けます。
- --show-omitted-dirs
- 内容表示や抽出をする際、検索の基準にマッチしないディレクトリに出会うごとに、その旨表示します (訳注: 要するに、何らかの理由で、内容表示や抽出をスキップするディレクトリがあれば、 それを知らせるということです。info tar verbose を実行すると、そのセクションにこのオプションのかなり詳しい説明があります)。
- --show-transformed-names, --show-stored-names
- ファイル名やアーカイブ名を表示する際、--strip や --transform オプションで変更した後の名前を使います (訳注: デフォルトでは変更前の名前が使われます)。
- --totals[=SIGNAL]
- アーカイブを処理した後で総バイト数を表示します。 SIGNAL を指定すると、そのシグナルが送られたときの総バイト数を表示します。 指定できるシグナルは、 SIGHUP, SIGQUIT, SIGINT, SIGUSR1, SIGUSR2 です。接頭辞の SIG は省略できます。
- --utc
- ファイル更新日時を UTC で表示します。
- -v, --verbose
- 処理したファイルの詳しいリストを出力します。 このオプションをコマンドラインで指定した数だけ、詳細レベルが 1 つずつ上がります。最大の詳細レベルは 3 です。それぞれの詳細レベルで tar の出力がどのようになるかについては、GNU Tar Manual のサブセクション 2.5.2 "The '--verbose' Option" に詳しい説明があるので、参照してください (訳注: info tar 'verbose tutorial' で見ることができます)。
- --warning=KEYWORD
- KEYWORD
で特定される警告メッセージを有効、または無効にします。
KEYWORD の前に no-
を付ければ、そのメッセージは抑制され、
付けなければ、有効になります。
--warning のメッセージを複数指定すると、前の指定に後のものが積み重なって行きます。
以下のキーワードは tar の操作全般を制御するものです:
- all
- すべての警告メッセージを有効にします。これがデフォルトです。
- none
- すべての警告メッセージを無効にします。
- filename-with-nuls
- "%s: 読み込んだファイル名にヌル文字が含まれています"
- alone-zero-block
- "%s に孤立したゼロブロックがあります"
以下のキーワードは tar --create に対して適用されます:
- cachedir
- "%s: キャッシュディレクトリのタグ %s があります; %s"
- file-shrank
- "%s: ファイルが %s バイト小さくなったので、ゼロで埋めます"
- xdev
- "%s: ファイルが異なるファイルシステム上にあるので、ダンプしません"
- file-ignored
- "%s:
未知のファイルタイプです。このファイルは無視します"
"%s: ソケットは無視します"
"%s: door は無視します" - file-unchanged
- "%s: ファイルが変更されていないので、ダンプしません"
- ignore-archive
- "%s: ファイルがこのアーカイブそのものなので、ダンプしません"
- file-removed
- "%s: ファイルが読み込む前に削除されました"
- file-changed
- "%s: ファイルが読み込み中に変更されました"
- failed-read
- 読み込み不能なファイルやディレクトリについての警告メッセージを抑止します。 このキーワードは --ignore-failed-read オプションと一緒に使用した場合にのみ適用されます。
以下のキーワードは tar --extract に対して適用されます:
- existing-file
- "%s: 既存ファイルをスキップします"
- timestamp
- "%s:
あまりにも古いタイムスタンプ
%s"
"%s: タイムスタンプ %s は %s 秒後の日時を示しています" - contiguous-cast
- "連続したファイル (contiguous files) を普通のファイルとして取り出します"
- symlink-cast
- "シンボリックリンクをハードリンクとして取り出してみます"
- unknown-cast
- "%s: 未知のファイルタイプ '%c'。通常のファイルとして抽出します"
- ignore-newer
- "現在の %s の方が新しいか同じです"
- unknown-keyword
- "未知の拡張ヘッダキーワード '%s' を無視します"
- decompress-program
- ある伸長プログラムの実行に失敗して、
別のプログラムで代用しようとしたときに出る詳しい説明を制御します。
この警告は、デフォルトでは無効になっています
(--verbose
使用時を除きます)。
この警告を有効にしたときに表示されるよくある例は、次のようなものです:
$ tar --warning=decompress-program -x -f archive.Z tar (child): cannot run compress: No such file or directory tar (child): trying gzip
このメッセージは、tar が最初に compress を使って archive.Z を伸長しようとして、それに失敗し、gzip に切り替えたことを示しています。
- record-size
- "レコードサイズ = %lu ブロック"
インクリメンタルな抽出を制御するキーワード:
- rename-directory
- "%s: ディレクトリ名が
%s
から変更されました"
"%s: ディレクトリ名が変更されました" - new-directory
- "%s: ディレクトリが新しく作られました"
- xdev
- "%s: ディレクトリが異なるデバイス上にあるので消去しません"
- bad-dumpdir
- "不正形式の dumpdir: 'X' が未使用"
- -w, --interactive, --confirmation
- すべての動作に対して確認を求めます。
互換オプション¶
- -o
- 作成時は --old-archive と同じであり、抽出時は --no-same-owner と同じです。
サイズ接尾辞¶
接尾辞 単位 バイトサイズ b ブロック SIZE x 512 B キロバイト SIZE x 1024 c バイト SIZE G ギガバイト SIZE x 1024^3 K キロバイト SIZE x 1024 k キロバイト SIZE x 1024 M メガバイト SIZE x 1024^2 P ペタバイト SIZE x 1024^5 T テラバイト SIZE x 1024^4 w ワード SIZE x 2
返り値¶
tar の終了コードは、要求された操作の遂行に成功したかどうか、 成功しなかった場合は、どのようなエラーが起きたかを示しています。
- 0
- 成功して終了しました。
- 1
- いくつかのファイルに相違があります。 tar が --compare (--diff, -d) コマンドラインオプションとともに起動された場合は、 アーカイブ内のファイルにディスク上の同名ファイルと異なっているものがあるということです。 --create, --append, --update オプションのいずれかが指定された場合は、アーカイブ処理の最中に変更されたファイルがあり、 従って、生成されたアーカイブはファイルセットの正確なコピーを保持していないことを示しています。
- 2
- 致命的なエラー。 これは、何らかの致命的で回復不能なエラーが起きたことを表しています。
tar によって起動されたサブプロセスが、0 以外の終了コードで終了した場合は、tar 自身もその終了コードで終了します。たとえば、圧縮オプション (-z など) を使用したとき、外部の圧縮プログラムが実行に失敗すると、そうしたことが起こり得ます。 他の例としては、rmt がリモートデバイスへのバックアップ中に失敗した場合などがあります。
関連項目¶
bzip2(1), compress(1), gzip(1), lzma(1), lzop(1), rmt(8), symlink(7), xz(1), zstd(1).
詳細な tar マニュアルは、 info tar を実行するか、 emacs(1) の info モードを使用すれば、読むことができます。
また、以下のサイトに行けば、様々な形式にした GNU tar マニュアルのオンライン版を見つけることができます。
バグ報告¶
バグは <bug-tar@gnu.org> に報告してください。
著作権¶
Copyright © 2013-2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.
2020/06/13 | TAR |