書式
伝統的な使用法
tar
{A|c|d|r|t|u|x}[GnSkUWOmpsMBiajJzZhPlRvwo]
[ARG...]
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...]
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...]
注記
この man ページは GNU
tar
の簡単な説明である。
使用例や推奨される使い方を含む詳しい議論については、texinfo
形式の GNU Tar Manual
をご覧になっていただきたい。info
リーダーと tar
関連文書が御使用のシステムに正しくインストールされているなら、コマンド
info tar
で詳細なマニュアルが読めるはずである。
詳細なマニュアルは、
emacs(1) の info
モードでも閲覧することができる。
また、下記のサイトに行けば、様々な形式にした詳細マニュアルのオンライン版を見つけることができる。
http://www.gnu.org/software/tar/manual
この man ページと 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
- [訳注]:
- 二番目の用例は、失敗すると思う。現在では、--verbose
のほかに --verbatim-files-from
というオプションもあるので、
--verb
では曖昧になってしまうのだ。
オプションは、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
を使うのは、常套手段である。
- [訳注]
- level
の利用法については、すこし説明が足りないと思う。
たとえば、最初にインクリメンタルアーカイブを作成したときに
(すなわち level 0
のダンプをしたときに)
作ったスナップショットファイルが
./snap
だったとしよう。これを
snap0
としてバックアップしておく。そして、インクリメンタルバックアップを行うたびに、この
snap0
をコピーしてスナップショットファイルとして使用する。そうすると、常に
level 1
のインクリメンタルアーカイブが出来るわけだ。
こうしておけば、最初のアーカイブと最後のアーカイブを抽出
(この場合、「展開」の方がピッタリした表現だが)
するだけで、最後のインクリメンタルアーカイブを作成したときの状態が復元できることになる。
もし復元したいのが、最後の
1
つ前の状態なら、最初と最後の
1
つ前のアーカイブを使用すればよい。
info tar の "Incremental Dumps" と
"Backup Levels"
を参照していただきたい。
- --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
は、ファイルをアーカイブに入れる前に、
それがスパースファイルかどうかを判断しようとする。
そして、もしそうなら、ファイル中の空っぽの部分をダンプしないことによって、
生成するアーカイブのサイズを小さくする。
ファイル属性の操作
- --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
の属性を除外することになる。
- [訳注]
- 次の項目についても言えることだが、訳者の手元の
tar-1.32 では --xattrs-exclude と
--xattrs-include
の働きが、説明とは逆になっているようだ。
つまり、exclude
で採用するパターンを指定し、include
で除外するパターンを指定するようになっている。
ご自分のところではどうなるか、確かめていただきたい。
- --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
の環境変数に加えて、以下の環境変数を継承する。
指定された 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
キロバイトである。有効な接尾辞のリストについては、
サブセクション「サイズ接尾辞」をご覧いただきたい。
ローカルファイルの選択
- --add-file=FILE
- FILE
をアーカイブに追加する
(ファイル名がダッシュで始まる場合に便利である)。
- --backup[=CONTROL]
- 上書きや削除をする前にバックアップを行う。引き数
CONTROL
を指定すれば、それがバックアップのやり方を決める。有効な値は以下のとおりである。
(訳注:
このオプションは、アーカイブの作成
(-c)、抽出
(-x)、どちらでも使えるが、-A,
-r, -u, --delete
では無効のようだ。)
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
というファイルがそこに含まれているかを調べる。
含まれている場合は、そのファイルから除外パターンを読み込む。
このパターンは、そのディレクトリにのみ影響する。
- [訳注]
- 訳者の手元の tar-1.32
では、このオプションの動作は、次の項目の
--exclude-ignore-recursive
と同じであるようだ。
すなわち、そのディレクトリ以下のサブディレクトリにも影響する。
ご自分のところではどうなるか、確かめていただきたい。
- --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
- ディレクトリにおいて自動的な下降をしないようにする。
- [訳注]:
- わかりにくいと思うので、もう少し説明する。--create
でこのオプションを使用すると、アーカイブする対象としてディレクトリを指定した場合、
そのディレクトリ自体はアーカイブに入れられるが、
そのディレクトリにあるファイルやサブディレクトリは、自動的にはアーカイブに格納されなくなる。
ファイルも一緒に格納したいのなら、それもアーカイブする対象として指定しなければならないのだ。
従って、このオプションは、たとえば
find コマンドと
--files-from='-´
オプションを使って、アーカイブする対象のリストを厳密に指定するときなどに、役に立つ。
--extract
と組み合わせ、抽出対象にディレクトリを指定した場合は、
そのディレクトリだけが抽出され、ディレクトリの中身は抽出されない。
なお、このオプションはコマンドラインにおける順番を意識する。
詳しいことは info tar recurse
を参照していただきたい。
- --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
も参照すること。
- [訳注]
- --null
オプションの第一の働きは、それ以後に現れる
-T
オプションに対して、ファイルリストの各項目が、改行ではなく、
ASCII NUL
で区切られていると知らせることである。
上の説明で述べているようなことは、二次的な働きというか、むしろ、
このオプションによって自動的に設定される
--verbatim-files-from
の働きだと言える。
- -N,
--newer=DATE, --after-date=DATE
- DATE
より新しいファイルのみを格納する。
DATE が / または .
で始まっている場合は、
ファイル名と見なされ、そのファイルの
ctime
が日付として使われる。
- --one-file-system
- アーカイブを作成する際に、ローカルファイルシステムに限定する。
- -P,
--absolute-names
- アーカイブを作成する際に、ファイル名の先頭のスラッシュを除去しない。
- --recursion
- ディレクトリを再帰的に辿る
(デフォルト)。
- --suffix=STRING
- 削除する前にバックアップを作り、拡張子を通常のものから変更する。
環境変数 SIMPLE_BACKUP_SUFFIX
によって変更されていないかぎり、
デフォルトの拡張子は
~ である。
- -T,
--files-from=FILE
- アーカイブから抽出する名前やアーカイブに格納する名前を
FILE から読み込む。
別の指定がないかぎり、FILE
の内容は、ASCII LF
で区切られた名前のリストでなければならない
(つまり、1 行に 1
個の名前だ)。
読み込まれた名前は、コマンドラインの引き数と同じやり方で処理される。
すなわち、引用符が除去され、単語に分割され、そして、ダッシュ
(-)
で始まる文字列があれば、tar
のコマンドラインオプションとして処理される。
- [訳注]:
- 上のパラグラフの後半で説明しているのは、オプションを指定した行が
FILE
中にあるかどうかを知るために
tar
が取る手続きであって、ファイル名を指定した行の扱いには関係がないようだ。
そうした行は、あるがままに、すなわち、引用符に囲まれていれば、
引用符が付いたものとして、先頭に空白があれば、空白に始まるファイル名として、扱われる。また、手元の
tar 1.32
では、オプションの行でも、引用符の除去はやっていないようである。
この動作が望ましくない場合は、
--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
にリストされたパターンにマッチするファイルを除外する。
情報出力
- --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
がリモートデバイスへのバックアップ中に失敗した場合などがある。
バグ報告
バグは <bug-tar@gnu.org>
に報告していただきたい。
著作権
Copyright © 2013 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.
訳者謝辞
tar
の出す警告文は、Masahito
Yamaga さんによる tar-1.32
のメッセージカタログの翻訳を利用させていただきました。お礼を申し上げます。
ただし、このマニュアル内で読みやすいように、すこし手を加えたところもあります。
ご了承ください。
なお、翻訳に当たっては、できるだけ実際に動かして確認していますが、
テープドライブは使ったことがありません。そのため、そのへんの翻訳については、
間違いがあるかもしれません。お気づきの点がありましたら、ご教示いただけるとありがたく思います。