(本ドキュメントは元来 wordpad ファイルで提供されていたものを 豊田英司 toyoda(at)gfd-dennou.org がプレーンテキストに変換したものです。 斜体の情報は失われています。ご容赦ください。) TAR(1) WIN-32 user's manual TAR(1) ------------------------------------------------ ☆☆☆ ☆☆☆ ☆☆☆☆ Kmtar for NT v0.96  ☆☆☆☆ ☆☆☆ ☆☆☆ ------------------------------------------------ 【名前】 tar - tape archiver for win-NT 【書式】 tar [-]{c|r|x|t|k}[v][a][M][i][I][e][n][z[N]][P{9|F|A}][f ARCH][b N] [N DATE][o PATH] file... #rule-file @list-file 【説明】 tar は、いくつかのファイルをまとめて一つのファイル(アーカイブと呼 びます)に格納したり、取り出したりします。アーカイブには、通常の MS-DOS ファイルのほか、物理フロッピーディスクドライブも指定できま す。また通常のtar 形式の他、compress ,gzip で圧縮されたファイルも 指定できます。NT 版では、FDへの物理アクセスは今のところ実験サポ     ートです。このドキュメントで斜字体になっている部分がそうです。 第一引数は、tar の実行すべきコマンドと、いくつかのオプションを指 定します。これらは、 tar tvf foo.tar のように続けて書いてもよいし、 tar -t -v -f foo.bar のように別々に書いてもかまいません。第一引数だけは、先頭の - を省 略することができますが、第二引数以降にオプションを指定する場合は 必ず - を付けなくてはいけません。 コマンドには、c、r、x、t、k の5つがあります。 -c (Create) file... で指定されたファイルをアーカイブに書込み ます。同名のアーカイブが存在していた時は、_tar ファイルの         ".CHK_ARCHIVE_OVERWRITE" コマンドの指定に従って処理されま         す以下のようにYESが指定されていたら、オーバーライトして良         いかどうか確認します。YES 以外なら問い合わせをせずに無条件         にその内容をすべてクリアしてから作業を開始します。          .CHK_ARCHIVE_OVERWRITE YES         file にはワイルドカード文字も使えます。file がサブディレ クトリのときは、そのディレクトリ下のすべてのファイルを書 込みます。ファイルの指定がなければ、カレントディレクトリ 下のすべてのファイルを書込みます。 @file とすることで response file からファイル名、別名を読 み込みアーカイブ中にファイル名と異なる名前を付けることが できます。 respone file には 1 行に 1 組、ファイル名と別名 (省略可) を空白類で区切って書いてください。 -r c コマンドと同様にファイルをアーカイブに書込みますが、ア ーカイブがすでに存在していた場合は、その最後に追加します。 ただし、アーカイブが圧縮された状態では、エラーとなります。 -x (eXtract) アーカイブ中のファイルを取り出します。file... で指定されたファイルだけが取り出されますが、もしもアーカ イブ中のディレクトリの名前が指定されたときは、そのディレ クトリ下にあるすべてのファイルが取り出されます。ファイル 名の指定がなければ、すべてのファイルが取り出されます。ワ イルドカード文字も使えます。【ワイルドカードの展開】参照。 取り出すファイルは、@list-fileとしてファイルからも読み込 めます。でも指定出来るのは 1000個まで、ワイルドカードが 使用できるのでこれで問題は無いでしょう。 展開時に、ファイル名の重複が検出されると、展開ファイル         の後ろに .000〜.NNNの展開番号を付けて展開されます。 -t (Table) アーカイブ中のファイルの一覧表を表示します。x コ マンドと同じく、ファイル名の指定があればそのファイルだけ を、ディレクトリ名が指定されればそのディレクトリ下の全フ ァイルを、指定がなければアーカイブ中の全ファイルのリスト を表示します。これもワイルドカード文字も使えます。【ワイ ルドカードの展開】参照。取り出すファイルは、@list-fileと してファイルからも読み込めます。でも指定出来るのは1000個 まで、ワイルドカードが使用できるのでこれで問題は無いでし ょう。 -k (K(c)ompare) アーカイブ中のファイルと、DISK上のファイルの 比較を行います。引数は x コマンドと同じように解釈され、ロ ードするかわりに比較をし、異なっていればその旨を表示しま す。もちろん圧縮されたtar ファイルも使えます。 これらのコマンドのあとには、以下のオプションをつけることができま す。 a (Ascii) 変換すべきファイルがアスキー形式であるとみなして、 アーカイブへの格納や取り出しを行います。c、r コマンドと共 に用いると CR コードと CTRL+Z(0x1A) を削除し、x コマンド 時に指定すると LF の前に CR を挿入します。UN*Xとの間でア         スキーファイルの交換を行う場合に指定すると便利です。 b N (Blocking factor)ブロッキングファクタを N に指定します。 N のデフォルト値は 20 です。 e (EUC code) x コマンド実行時に漢字コードをEUC => SHIFT-JIS 変換します。 f ARCH (File) アーカイブファイルの名前を指定します。ARCH には普 通のファイルのほか、 /dev/rfd{0|1|2|3}MEDIATYPE という形式で物理フロッピーディスクドライブも指定できます (MEDIATYPEの書式は【メディアタイプ】の項を参照)。         現段階では、メディアは、OSが普通に読み取れるものに限ら         れます。1.44M FDなどです また、ARCH として - が与えられると、x、t、k コマンドは標 準入力からアーカイブを読み、c、コマンドは標準出力へ結果を 出力します。処理の前後に compress/uncompress を行なうとき などに便利です。 さらに、x, t コマンド実行時には、通常のtar 形式の他 comp- ress ,gzip で圧縮されたファイルも指定できます。これらは通 常 "tar.Z" or "tar.z" or "tar.gz" と表記されるものでMSDOS などではでは、"taz" or "tgz" と表記されるものです。 ファイル形式は、ファイル内容で判断しますので、指定は不要 です。また圧縮ファイルが分割されている場合は、ファイルの 拡張子を".000" として下さい。ファイルの終了に達すると自動 的に ".001",".002" と探して読み込みます。見つからなければ ファイルの交換を要求します。それでも、見つからなければ本 当のファイル終端に達したと判断します。 (【圧縮ファイルの展開】参照) f オプションでファイル名に'*' '?' が使用可能です。x,t コ マンド実行時に意味を持ちます。-n option と組み合わせたり してアーカイブの整合性のチェックに使ったりします。 f オプションが省略されたときは、環境変数 TAPE からアーカ イブファイルの名前を読みとります。この変数が未定義であれ ば、.default という別名を _tar の中から探し、そこに定義さ れている名前を用います。 f オプションは、二つ与えることもでき、その場合は二つのフ ァイル(通常はフロッピーディスクドライブ)が交代に使われま す。これは M オプションが指定されているときだけ意味を持ち ます。 g (GNUtar) GNUtar 互換のヘッダを生成します。デフォルトのヘ ッダ形式は、POSIX (IEEE 1003.*)の形式ですが、これは GNUt ar のそれとは微妙に異なっています。本プログラムで作成した アーカイブを GNUtar で処理する場合は、g オプションを指定 する必要があります。 i (inspect) t コマンド実行時に展開に伴い障害となるファイル 名のreport を作成します。 後述の【展開ファイル名の調査】参照 I (ignore file attribute) x コマンド実行時に、ファイルの属性 をセットしません。read only の属性がセットされないのでFDな どのツールでディレクトリごとの削除が出来ます。 M (Multi-volume) アーカイブを複数のボリュームにわけることを 可能にします。GNUtar のマルチボリュームと互換性があります ので、例えばMS-DOS 上で tar -cvMgf /dev/rfd0news . として フロッピーディスク複数枚にわたるアーカイブを作成し、UN*X 上の GNUtar で展開することができます。 n (no message) t コマンド実行時に、出力を抑えます。 例えば tgz ,taz ,tar ファイルの整合性チェックに使います。 N DATE (New file) c、r コマンド実行時に、出力対象をDATE 以降の変 更時刻をもつファイルのみに制限します。DATE は時刻を指定す るパラメータで、直接日付が記述されればその時刻が、またフ ァイル名が与えられれば、そのファイルの変更時刻が取られま す。 日付の形式は、次の通りです。 月/日[/年] [時:分[:秒]] ここで、年は西暦で、時は24時制(0から23)です。年と時刻は省 略ができます。時刻を指定する場合は、一つの引数であること を示すために-N "1/15/91 12:00" のように引用符でくくる必要 があります。 o PATH (extract to) x コマンド実行時に、展開をPATH の下に行います。 PATHは、末尾の '/', '\'に応じて内部で'/'を付加して処理しま す。以下の例では、c:/gnu というサブディレクトリが存在しな ければ、勝手に作成して作業を続けます。 指定の形式は、次の通りです。 tar xvaf GCC242.TGZ -o c:/gnu or tar xvafo GCC242.TGZ c:/gnu q ファイルを展開する時にオーバーライトしないで、ファイル名の         後ろに3桁の数字を追加して新しい名前を作ります。         例:            test.c -> test.c.001 s X セキュリティ記述ファイルをXに指定する。この機能は対象がNTFS でないと無視される。c、x コマンドで使用のこと。このファイル         は、圧縮されないので多くのファイルを固めるときはそのサイズも         注意すること。 S Stelth read 機能 NTFS などで、ファイルのlast-access-time を変更せずに読み込む。 v (Verbose) c、x、k では処理中にファイル名を表示し、t コマ ンドではファイルのモード、サイズ、所有者のユーザー id、グ ループ id、変更時刻を表示します。 V 上記 v オプションと同じで秒まで表示。 E (Write Verify) c コマンド実行時に書き込みデータのベリファ     イを行います。FDへのデータ書き込みに際して役に立つと思い     ます。 y (Yes) ディスク交換の問い合せを抑制します。M オプションを 指定してマルチボリュームを扱う場合、tar はボリュームの切 替の際にディスク交換を促すメッセージを表示し、キーボード 入力を待ちますが、y オプションはこのメッセージ表示と入力 待ちを抑制します。二台のディスクドライブを交代に使用する 場合に意味があります。 z[N] (gzip) cコマンド実行時にgzip相当の圧縮を行います。デフォ Z[N]  ルトの圧縮レは、gzip v1.2.4のレベル6です。圧縮レベルの指     定は、Nに1〜9を指定します。1がスピード重視、9が圧縮率重     視です。大文字のZを使った時のデフォルトは、レベル1です。     圧縮レベル6と1では30%程度の時間差がでます。      アーカイブファイルの拡張子が"000" の場合は、DISK-FULL     で書き込みができなくなった時点でFDの交換要求を行います。 ---- 注意 ---- Gnu tar では Zオプションは、compress による圧縮をzオプ ションはgzipによる圧縮を意味しますが、本 kmtar for NTで は、デフォルトの圧縮レベルが異なるだけでどちらも gzipに よる圧縮です。 #rule-file アーカイブ中のファイル名と展開後のファイル名の対応 を記述したファイル。展開時とアーカイブ作成時に利用 します。詳細は【ルールファイル】参照 @list-file x t コマンド実行時に展開したいファイルの指定。指定 は各行の最初の一つだけです。c r コマンド実行時は最 初の一つを二番目のファイル名でアーカイブ中に納めま す。'#' を行の最初に書く事でコメント行と認識します。 【メディアタイプ】     このバージョンでは意味を持ちません。 メディアタイプ(フロッピーのフォーマット)の指定方法には、直接パラ メータを記述するやりかたと、事前に定義されたシンボル名を引用する やりかたの二通りがあります。直接の場合は、次の形式で記述します。 /dev/rfdDRV:TYPE:SIZE:SPT:TPV:BIAS:SQT[:BLK] 各フィールドは次の様な意味を持ちます。 DRV ドライブ番号 (0 から 3) TYPE 640KB/1MBの指定 (S(640k), L(1.25M) または H(1.44M)) SIZE セクタ長 (256, 512, 1024 のいずれか) SPT 1トラック中の 512 ブロックの数 (注意:セクタ数ではない) TPV 1ボリューム中のトラック数 (片面で1と数える。いわゆる720Kフォーマットなら160) BIAS 最初のデータが記録されるトラック番号 SQT なにを書いても無視される BLK ブロッキングファクタ 例えば、/dev/rfd0:S:512:9:160:0:0 は0番ドライブ上にある、記録方式 が2DD、1セクタ512バイト、1トラック9セクタ、1ボリューム160トラック のフロッピーの先頭のトラックから使用することを指定します。 しかし、これらのパラメータを毎回指定するのは大変なので、ドライブ 番号以外のパラメータは、名前で引用することを許しています。たとえ ば上の例は、/dev/rfd0news と簡潔に記述できます。 ここで使用できるメディアタイプ名は、_tar というファイル中に事前に 登録しておかなくてはなりません。ファイル _tar には、次の形式で一 行に一つずつメディアタイプ名を定義します。 MEDIATYPENAME :TYPE:SIZE:SPT:TPV:BIAS:SQT[:BLK] /dev/rfd0 のようにメディアタイプを省略した場合は、ファイル _tar 中で一番初めに定義されているメディアタイプであると解釈されます。 また、.default という特別なエントリによって、省略時のアーカイブ名 (ドライブ名)を与えることができます。 また、このFDの物理アクセスはマシンに依存します。そこでこのルーチン 実行時は、マシンの判別を行いそれぞれのマシンのBIOSを制御します。で すが、このマシン判別ルーチンは手抜きで、FMR/TOWNS,PC98 normal-mode B16 はいいですが、IBM PC/AT, J3100, PC98 hireso-modeは誤認の可能性 があるので .machine という特別なエントリによって、マシンのBIOSタイ プを指定できます。 PC9801 系 (PC9801 normal/hireso , EPSON 98 互換機) .machine PC98 PC/AT 系 (J3100,B16, PC/AT) .machine PC/AT FMR/TOWNS 系 .machine FMR なお、先頭が # の行はコメントとして無視されます。 【ワイルドカードの展開】 1.任意の1文字 "*?[]{}^\" 以外の1文字は,その文字そのものを表します. 2."*" 任意の0文字以上の文字列を表します. 3."?" 任意の1文字を表します. 4."[...]" カッコ内の任意の1文字を表します. 5."[^...]" カッコ内の文字以外の任意の1文字を表します. 6."{..,...}" カッコ内の"," で区切られた文字列のうちの,任意のひとつを表 します. 7."\" 続く1文字そのものを表します. 注: "*.*" は、サブディレクトリとはマッチしません。【使用例】参照。 【圧縮ファイルの展開】 使用したcompress のソースは v4.3d のものです。(comp16 と同じです)。 gzipのソースはgzip-1.2.4 です。 ファイル形式の自動認識は、gzip ,compress 以外のファイルは通常の tarファイルとして認識します。 PUK3.0 から圧縮ファイルを展開する時に、中間ファイルを作成します。 中間ファイルは、環境変数TMPで指定の所か、カレントディレクトリで す。v2.0 ではcompressファイルの展開に中間ファイルを用いなかった のでが、gzip に合わせて中間ファイルを作ります。ファイルのサイズ は、"gcc-2.4.2.tar.z" 展開時で 330Kbyte 程度です。これは圧縮の1 BLOCK のサイズです。compress の場合はもっと小さくtar の1BLOCKの サイズです。 【ルールファイル】 このtar はルールファイルを読み込み、アーカイブ中のファイル名とDISK 上のファイル名との対応を付けます。これで特定のファイルを好きな名前 で取り出したり格納したりで来ます。以下の要領で使います。このファイ ルはエディタで作成してもいいですが、t コマンドと iオプションを組み 合わせてサンプルを作成することも可能です。 (【ルールファイルの半自動作成】参照) 〔ルールファイルの中身〕 -------------------ここから---------------------------------------- アーカイブ中のファイル名1 DISK 上のファイル名1 アーカイブ中のファイル名2 DISK 上のファイル名2 : : アーカイブ中のファイル名n DISK 上のファイル名n -------------------ここまで------------------------------------------ アーカイブ中のファイル名とDISK 上のファイル名は、タブまたは空白で 分離して下さい。'#'で始まる行は、コメント行として読み飛ばされます。 〔ルールファイルの利用例〕 通常の変換をすると名前が重複する物を編集して都合の良い名前にする。 例えば gcc.tex-1 gcc.tex gcc.tex-2 gcc.tex gcc.tex-3 gcc.tex を gcc.tex-1 gcc_tex.1 gcc.tex-2 gcc_tex.2 gcc.tex-3 gcc_tex.3 と編集することで望み通りの名前で取り出す事が出来ます。 また、このファイルはunix 上のファイル名を残して起きたい場合にも 便利です。 〔変換ルールが重複している場合〕 最初のルールのみが有効。 〔変換ファイルに使用されないルールが有る場合〕 何も影響は有りません。つまり複数のアーカイブファイルの 変換ルールを一つのファイルに記述してかまいません。 【ルールファイルの半自動作成】 このtar はルールファイルの作成補助のため t コマンドに i オプション を設けました。これで、指定されたアーカイブを展開した場合にDISK上で 重複するファイル名、変更されるファイル名の一覧表が作成されます。 以下の要領で使います。 指定 : tar tif glibc103.tar > file.rul 〔file.rulの中身〕 ------------------------------------------------------------------- # TiTLE # はコメント行です # 日付 # 通常の変換をすると名前が重複する物 アーカイブ中のファイル名1 DISK 上のファイル名1 アーカイブ中のファイル名2 DISK 上のファイル名2 : : : : : : アーカイブ中のファイル名n DISK 上のファイル名n # # デフォルトの変換によりアーカイブ中のファイル名とDISK上の名前とが # 異なってしまう物 アーカイブ中のファイル名1 DISK 上のファイル名1 アーカイブ中のファイル名2 DISK 上のファイル名2 : : : : : : アーカイブ中のファイル名n DISK 上のファイル名n --------------------------------------------------------------------- このファイルのDISK上のファイル名n を適当に編集しx コマンド実行時に このファイルをルールファイルとして読み込ませる事で任意の名前で取り 出せます。 【使用例】 tar cvf foo.tar *.c *.h makefile ファイル foo.tar に、拡張子が .c、.h のファイルすべてと、 makefile とを格納します。 tar cvfz foo.tgz *.c *.h makefile ファイル foo.tgz に、拡張子が .c、.h のファイルすべてと、 makefile とをgzip で圧縮レベル6で圧縮した形で格納します。 tar cvfz9 foo.tgz *.c *.h makefile ファイル foo.tgz に、拡張子が .c、.h のファイルすべてと、 makefile とをgzip で圧縮レベル9で圧縮した形で格納します。 tar cvfZ foo.tgz *.c *.h makefile ファイル foo.tgz に、拡張子が .c、.h のファイルすべてと、 makefile とをgzip で圧縮レベル1で圧縮した形で格納します。 tar cvfz foo.000 *.c *.h makefile ファイル foo.tgz に、拡張子が .c、.h のファイルすべてと、 makefile とをgzip で圧縮した形で格納します。このとき、書き 込みディスクが一杯になった場合は、FDと仮定して交換要求を行 います。つまり複数枚のFDに分割格納します。 tar tvf /dev/rfd0news Aドライブ上の news 形式のディスクの中の、ファイルの一覧表 を出力します。 tar tvpFf /dev/rfd0news Aドライブ上の news 形式のディスクの中の、ファイルの一覧表 を出力します。マシンがFMR/TOWNS のBIOS を持つ事を指示しま す。 tar cvf - foo | compress >foo.taz サブディレクトリ foo より下のすべてのファイルをアーカイブ し、compress により圧縮し、foo.taz というファイルに格納し ます。 tar xvf bar.taz 圧縮されたアーカイブファイル bar.taz を展開します。 tar xvfo bar.taz a:/foo tar xvf bar.taz -o a:/foo 圧縮されたアーカイブファイル bar.taz をa:/foo というディレ クトリに展開します。a:/foo が無ければ作ります。 tar xvIf a:bar.000 圧縮され更に複数に分割されたたアーカイブファイル bar.000 - bar.00x をドライブa:から展開します。この時リードオンリ ーの属性は付けません。 tar tif a:bar.000 >bar.rul 圧縮され更に複数に分割されたたアーカイブファイル bar.000 - bar.00x の展開時のファイル名のDISK上での重複、変更をチ ェックし、bar.rul として格納します。 tar xvaf a:bar.000 #bar.rul 圧縮され更に複数に分割されたたアーカイブファイル bar.000 - bar.00x の展開時のファイル名のとアーカイブ中のファイル 名との対比をルールファイルbar.rul で取りながら展開を行い ます。 tar xvaf bar.tgz bar-1.2.[2,3]/*.* 圧縮されたアーカイブファイル bar.tgz の中からbar-1.2.3 または、bar-1.2.2 のディレクトリを展開します。サブディ レクトリは展開されません。 tar xvaf bar.tgz bar-1.2.[2,3] 圧縮されたアーカイブファイル bar.tgz の中からbar-1.2.3 または、bar-1.2.2 のディレクトリの下の全ファイルを展開 します。サブディレクトリも展開されます。 tar xvaf bar.tgz @bar.lst 圧縮されたアーカイブファイル bar.tgz の中からファイル bar.lst の中に記述されているものを展開します。この時 行の終端を CR+LF にします。 tar tnf b:/gnu/*.tgz b:/gnu の圧縮されたアーカイブファイル *.tgz をテストし ます。エラーの有るファイルだけ表示されます。回覧時に便利。 tar -cvMyf /dev/rfd0 -f /dev/rfd1 -N marker . カレントディレクトリ下のファイルのうち、ファイル markerよ りも新しい変更時刻をもつファイルだけをマルチボリューム形 式でフロッピーディスクに格納します。0番ドライブと1番ドラ イブを交代に使い、ディスク交換のさいにいちいち確認を求め ることはしません。 【環境変数】 TZ 適切なタイムゾーン名と UTC からの差(日本ならば JST-9) TAPE デフォルトのアーカイブ名 【参照するファイル】 _tar メディアタイプ名、デフォルトのアーカイブ名の定義(tar.exe と同じディレクトリに入れておくこと) 【バグ】 ハードリンクやシンボリックリンクされているファイルをもつアーカイ ブは扱えません。 【バージョン】 kmtar 本体 2.01 Power Up Kit 3.7a NT 対応 0.96 【取扱い】 このkmtar for NT は、tantan が勝手に改変したものであり。バグや不具 合が有っても、オリジナルの作者kmori 氏とは無関係ですのでkmori氏には 連絡を取らないで下さい。 ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ --- 著作権に関して --- オリジナルは作者のkmori 氏が「本プログラムの著作権を放棄します。 配布、変更、変更したものの配布等、自由に行なってかまいません。」 となっていますが、GNU の gzip を取り込んだ為、GNU GPLに従います。 同梱のCOPYING を参照して下さい。 【連絡先】 このkmtar for NT 改変版の問題点及び要望は以下までお願いします。 NIFTY FEXT 4番会議室 ライブラリーソフトへの質問/要望 また私への直接のメールでもかまいません。なお頂いたバグ報告や 要望の内容はは、上記の会議室で紹介させていただくことがあります。 あらかじめご了承下さい。  SGL00213@niftyserve.or.jp tantan 【謝辞】 私にとってkmtar は、GNU 関係のファイルの展開に必要不可欠なのもと なっています。この様なすばらしいプログラムを公開して下さったkmori 氏とメンテをされているAssistantIO氏に感謝します。 また、EUC コードの変換は、市川 至 様(株)富士通研究所 ソフト3研 (E-Mail Address: ichikawa@flab.fujitsu.junet)作の nfk.c を組み込む 形で実装しました。ここでお礼を述べさせて頂きます。 【改変者】 tantan SGL00213@niftyserve.or.jp 【オリジナルの作者】 AssistantIO pcs28337@asciinet.or.jp 【オリジナルの作者】 E-Mail kmori@lsi-j.co.jp 日経MIX kmori アスキーネット pcs29537 住所 〒151 東京都渋谷区千駄ケ谷1-8-14 エル・エス・アイ ジャパン(株) 森 公一郎