• ベストアンサー

tar->gzipの中間ファイル未作成方法ってあります?

ワークステーションで作業してます。 バックアップをとったり、ftpするときによく tarしてgzipするのですが、tarからgzipって"|(パイプ)"で 単純につなげないのでいつも、コマンドを一つずつ実行するので 大きな中間ファイルができてしまいます。 中間ファイルを作らずにtar/gzipが一括で行えるコマンドの記述を 知ってる方、是非教えて下さい。ちなみに解凍方法も・・・

質問者が選んだベストアンサー

  • ベストアンサー
  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.7

No.5 補足への回答です。 逆(解凍)は、以下のようにすればできます。   gzip -dc xxxxx.tar.gz | tar xf -   (gzip -dc の代わりに gunzip -c または zcat でも可) 同じように、「xf -」とは「tar の入力を標準入力から得る」ための指定です。 どうも tar コマンドについて体系的に理解されてないようなので、一度 man tar をじっくり読まれてはいかがですか? (他にも p とか m とか関連オプションがあるのですが、ここでは省略します)

lts107
質問者

お礼

再度、解説有難う御座います。 大変役に立ちました。 今度、manでじっくり見てみます。

その他の回答 (7)

  • beatkun
  • ベストアンサー率46% (7/15)
回答No.8

NO.4の補足です。 「p」オプションですが、圧縮する時には必要ありませんでした。(_O_) 解凍する時に、「p」オプションを付けると、圧縮時のパーミッション 情報、ユーザー情報などをそのままで解凍します。 man tar に書いてありますので、読んでみて下さい。 で、OSがSolarisと言うことで、現在使っているSolarisマシンで調べたところ、GNU の tarを入れていました。 もし、インストールする場合は、適当なFTPサーバから、GNU tar を取ってきて # zcat tar-1.13.tar.gz | tar xvf - # cd tar-1.13/ # ./configure # make # make install とすれば、OKです。CPUパワーにもよりますが、時間的には、3分位でできる と思います。また、/bin/tar と区別したければ、 # mv /usr/local/bin/tar /usr/local/bin/gtar とすればOKだと思います。 私は、逆に、/bin/tarを/usr/local/bin/tarにシンボリックリンクしちゃっています。(^^;;

参考URL:
ftp://ring.htcn.ne.jp/pub/GNU/tar/
lts107
質問者

お礼

再度、解説有難う御座いました。 とりあえずysk6406さんの方法でできましたので 時間があるときにGNUをインストールしてみたいと思います。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.6

naturalです。 補足有り難うございます。 zオプションはGNUのtarで使えますのでGNU tarを入れる必要があります。 ダウンロード先が判らなかったので明記できませんが、Solaris2.6に対応したバージョンが有るはずです。 尚、そこまでするのは面倒、という場合はysk6406さんの仰っている方法でなさった方が手っ取り早いですね。

lts107
質問者

お礼

再度、解説有難う御座いました。

  • ysk6406
  • ベストアンサー率40% (237/589)
回答No.5

まず、「tarからgzipって"|(パイプ)"で単純につなげない」ことはありません。 単に、tar cf - (取りたい場所) | gzip > xxxxx.tar.gz とすればOKです。 (私のところでは、昔からこのやり方で tar→gzip しています。) 一応解説しますと、「tar cf -」というのは「tar の出力を、ファイルではなく 標準出力に流せ」という指定です。 また、ワークステーションということで UNIX を使っているという前提で言えば、 パイプで繋いだコマンドは一つずつではなく同時に実行され、その間はメモリ経由で データが渡されるので、中間ファイルが作られることはありません。

lts107
質問者

補足

有難う御座います。 "tar cf - (取りたい場所) | gzip > xxxxx.tar.gz " でできました。 "-"の存在を知れたのがとても嬉しいです。 で、申し分け無いのですがこの逆の 一括解凍も教えて頂けないでしょうか? 宜しくお願いします。

  • beatkun
  • ベストアンサー率46% (7/15)
回答No.4

ワークステーションと言うことで、OSが何か??解りませんが、 GNUのtarを使っているのでしたら・・・ tar cvfpz 圧縮ファイル名 圧縮するファイル名 ex. # tar cvfpz hogehoge.tgz hogehoge で出来ます。一度、man tar してみたらどうでしょうか??

lts107
質問者

補足

有難う御座います。 初心者でGNUというのがよく分かりません。 私のOS:Solalis2.6はそれに含まれるのでしょうか? ちなみに、manでtarを調べても"zオプション" らしきものは見当たりませんでした。 また、オプションpは何を意味するのでしょう? ご教授願います。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.3

GNU tarであればzオプションがあります。

lts107
質問者

補足

有難う御座います。 初心者でGNUというのがよく分かりません。 私のOS:Solalis2.6はそれに含まれるのでしょうか? ちなみに、manでtarを調べても"zオプション" らしきものは見当たりませんでした。 新たに、情報ありましたらご教授願います。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.2

>「回答」→「解凍」 です。(^_^; 恥ずかしー。(#^_^#) そうそう、私が的を外しているかもしれないと思ったのはOSが明記されていないためです。 出来るだけ早く正解を得たいのなら環境等は明記した方が良いですよ。

  • natural
  • ベストアンサー率37% (419/1115)
回答No.1

tar -cvzf 圧縮ファイル名 対象ファイル名 ・・・ では駄目でしょうか? -cvzfが駄目だったら「-」を外してやってみてください。 尚、上記の「圧縮ファイル名」は圧縮後のファイルの名前、「対象ファイル名 ・・・」は圧縮するファイルのリストです。 逆に回答するときは「xvzf」オプションを使用します。

lts107
質問者

補足

有難う御座います。 私の環境はUNIX(Solalis2.6)です。 よく分かりませんが、オプションに"z"がないみたいです。 "z"って無いこともあるんですかねぇ~? ご存知でしたら、ご教授ください。

関連するQ&A