TOP : About EMX : GNU tar
Previous: patch
Next: gzip

GNU tar

●tar とは何か

 tar は tape archiver の略で、UN*Xで標準的に使われるアーカ イバです。tapeと付いていますが、tapeにしか使えないわけではあ りません :)
 基本的には、圧縮の無い LHA みたいなものと思ってください。 圧縮一応できますが、あくまでも補助的な機能と思ってください。 そう、圧縮機能はサブプロセスとしてgzipとか compress という 圧縮専用プログラムを起動する事によって実現しています。

 GNU tar では、標準的な tar に加えて、上記の圧縮のためのオ プション、マルチボリュームなどの便利な機能が追加されています。

●emx版GNU tarのアーカイブ

 GTAR251.ZIPというものが最新版の様です。拡張属性も保存でき るようになっているようです。バージョンとしては、

  GNU tar version 1.10 - AK 2.51
となります。

 このアーカイブを展開するとおおよそ次のようなファイル構成に なっています。


    +--TAR\
    |    +--tar.exe               // GNU tar実行ファイル
    |    +--tar.INF               // GNU tar標準機能のオンライン文書
    |    +--gtar.INF              // OS/2版拡張機能のオンライン文書
    |    +--gtar.ps               // PostScript版ドキュメント
    |    +--LIB\                  // ライブラ(utils.a)リソース
    |    +--SRC\                  // TAR本体のソース
    +--readme                     // 最初に読んでね(^_-)
    +--compress-2.zip             // 圧縮プログラム
    +--gz124-32.zip               // GNU圧縮プログラム

●環境変数

 次の二つを設定してください。

TZ
言わずと知れたタイムゾーンの設定ですね。 日本だと、JST-9JSTかな。
TAR_COMPRESS
子プロセスとして起動する圧縮プログラムを を指定してください。普通gzipなので、 SET TAR_COMPRESS=gzip とするとよいでしょう。OS/2版独自仕様です
なお、TAR_COMPRESSを指定しないといつでもcompressを使って圧縮 を行うようになります。これはOS/2版のGNU tar独自の仕様なので すが、個人的にはちょっと好かんです(^^;;;;

●インストール

 前記環境変数を設定したら、実行ファイルをPATHの通ったディレ クトリへコピーしてください。
 コピーするものは、

  • tar.exe
  • gz124-32.zip中のgzip.exe
  • です。
     もし、環境変数TAR_COMPRESSを設定しない、あるいはcompressを 使った圧縮も行ないたい場合は、次のファイルもコピーが必要です。
  • compress-2.zip中のcompress.exe
  •  DLLなどはありませんので、それ以外の作業は不要です。

    ●ドキュメント

     OS/2標準のドキュメントであるオンライン文書形式(.INF)のドキュ メントが用意されています。

    TAR.INF
    GNU tarの機能をまとめた文書
    gtar.INF
    主にOS/2版の拡張機能についてまとめた文書
     また、PostScript形式の gtar.ps というものもありますが、手 元にPostScript文書の適当なブラウザが無かったので内容は確認し ていません。TeX文書を変換したものなんじゃないかなあと勝手に 想像してます(^^;

    ●簡単な使い方

     まず圧縮しないでただアーカイブするだけの使い方を説明します。 オプションの大文字小文字は間違わないように(^^)
     まずは、アーカイブを作ってみましょう。作成するアーカイブの 名前は foo.tar です。

       例1)非圧縮、アーカイブ新規作成いろいろ
    
          [C:\foo]tar cvf a:foo.tar *        ←カレントディレクトリ配下全ての場合
    
          [C:\foo]tar cvf a:foo.tar          ←       同上
    
          [C:\foo]tar cvf a:foo.tar *.c      ←カレントディレクトリの*.c
    
          [C:\foo]tar cvf a:foo.tar *.c *.h  ←カレントディレクトリの*.cと*.h
    
    
    ディレクトリを指定した場合は、デフォルトではサブディレクトリ まで再帰的に集めます。

     次にこのアーカイブの内容を参照してみます。

       例2)非圧縮、アーカイブ内容一覧表示
    
          [C:\foo]tar tvf a:foo.tar
    
    

     次はアーカイブの内容を解凍してみます。

       例3)非圧縮、アーカイブのファイル解凍
    
          [C:\foo]tar xvf a:foo.tar          ← 全解凍
    
          [C:\foo]tar xvf a:foo.tar bar.c    ← bar.cだけ解凍
    
          [C:\foo]tar xvf a:foo.tar "*.c"    ← *.cだけ解凍
    
          [C:\foo]tar xvf a:foo.tar "*.[ch]" ← *.cと*.hを解凍
    
    
    ワイルドカードを指定する場合は、上記のように必ず「""」で囲ん でくださいね。「""」で囲まなかった場合、まずカレントディレク トリにワイルドカードに適合するものを探して、それを解凍しよう としてしまいます。
     そうそう、"*.[ch]"というのは、UN*Xのシェル風のワイルドカー ド展開処理(グラビングというべきか)であります。"*.{cc,h}"のよ うなcsh風の展開機能はサポートしていないようです。

     他にも追加オプション -r (--append)、新規ファイル追加オプショ ン-u (--update)などがあります。それぞれ-c(--create)/-t(--list) /-x(--extract)オプションの代わりに指定してください。でも、 圧縮指定とは共用できないかも(!?)

     圧縮する場合は、上記のそれぞれのオプション指定に加え -z オ プションを付加します。

       例3)gzip圧縮、アーカイブ新規作成
    
          [C:\foo]tar cvzf a:foo.tar.gz *
    
    
    一覧表示、解凍の場合も同様に -z オプションを付け加える事にな ります。
       例4)gzip解凍、アーカイブ一覧表示、解凍
    
          [C:\foo]tar tvzf a:foo.tar.gz                ← 一覧表示
    
          [C:\foo]tar xvzf a:foo.tar.gz                ← 解凍
    
    
     ここで、-z の代わりに -Z を使用すると compress/uncompress の圧縮/解凍を行うというのが、GNU tar の本来の仕様なのですが、 今回紹介した GTAR251.ZIP のものでは、この z の大文字・小文字 の違いは意味を持ちません。

    ●拡張子

     tarで使用するファイルの拡張子にはプログラム上の制限はあり ません。しかし、人間の見易さという点で標準的に使われる(よう になった)ものはあります。
     というわけで、以下に tarを使用する場合に最も一般的(標準的) に使われる拡張子をまとめておきます。

    .tar
    tarの非圧縮アーカイブ。
    .tar.gz
    tarでアーカイブされgzipで圧縮されたもの。 long file name形式。
    .tgz
    tarでアーカイブされgzipで圧縮されたもの。 8+3形式。
    .tar.Z
    tarでアーカイブされcompressで圧縮されたもの。 long file name形式。
    .taz
    tarでアーカイブされcompressで圧縮されたもの。 8+3形式。
     なお、一時期は .tar.z (小文字のz)が、gzipで圧縮されたもの に使われていた時期もありましたが、残存しているものを除き、今 日ではほとんど使われておりません。

    ●一歩進んだ使い方。

     リムーバブルメディアの複数ボリュームに保存する場合は、-M (--multi-volume)オプションを使います。ただしマルチボリューム 指定と圧縮指定は同時に使う事はできません。

        例1)マルチボリュームに保存する。
    
          [C:\foo] tar Mcvf a:\backup.tar large_dir
    
    

     次に、拡張属性も含めて保存する場合は -p(--all-files) オプ ションを使用します。

        例2)拡張属性も保存する(圧縮有り)
    
          [C:\foo] tar pcvzf a:\backup.tar.gz ExtAttrFiles
    
    

     標準入出力を使う場合は -f(--FILE)オプションで指定するファ イル名に「-」を使います。
     非圧縮でアーカイブし、gzipを直接指定して圧縮する場合は次の ようになります。

        例3)パイプを使い、gzip直接指定圧縮
    
          [C:\foo] tar cvf - DIRNAME | gzip -c > bar.tar.gz
    
    
     逆に、gzipでファイルに落とさずに標 準出力に解凍したものをtarで一覧表示するには次のようになりま す。ファイルを取り出す場合も同様です。
        例4)パイプを使い、gzip直接指定一覧表示
    
          [C:\foo] gzip -dc bar.tar.gz | tar tvf - 
    
    

    ●オプションの短形式と長形式

     GNUのツールのオプションには '-'ひとつだけで始まる短形式の オプション(UN*Xの標準的なオプション指定方法)と'--'で始まる長 形式のオプション(GNU独自の指定方法、...POSIXかも!?)がありま す。  例えば、以下の二つは全く同じ動作をします。

    
         [C:\foo] tar tvf bar.tar
    
         [C:\foo] tar --list --verbose --file bar.tar
    
     ここで、短形式では'-'を付ける事も可能です。以下に示すよう に。
    
         [C:\foo] tar -tvf bar.tar
    
     さて、「GNU tarにおいて」この短形式と長形式を混在させる時 は短形式の前の'-'を省略しないようにすると良いです。
    
         [C:\foo] tar --list -vf bar.tar
    
     あ、そうそうアーカイブファイル名は -f(--file)オプションと 対になっているので、-fの次のオプションで指定するようにしてね。 へたに間違えると大変なことになるよ(^^)/

    ●再コンパイル

    わかりませ〜んヽ(^o^;)ノ

     これ、EMX標準ではついてこないヘッダファイルを使っていたり、 GNU makeではないmakeを使っていたりし てうまくコンパイルできんのです(^^; まあ、makeに関しては Makefileを用意してあげれば済むだけの話なのですが、どうもなん か足りない(謎)ような気がするのよねえ(^^;;;;

    ●終わりに

     この GTAR251.ZIP はフリーのバックアップツールとして知られ ているGTAKを統合したパッケージになっているようです。 GTAK251.ZIPというアーカイブもあるのですが、こちらはなんかド ライバ集といった風情(!??) でも、GTAKとしての機能の説明は遠慮 させてください。だってテープ持ってないから、つっこんだ説明で きないんだもの(^^;;;;


    TOP : About EMX : GNU tar
    Previous: patch
    Next: gzip
    hedghog@ibm.net
    最終更新日:1997.02.17