プロが教えるわが家の防犯対策術!

こんにちは、tarについてご教授ください。

tar czvf /home/hoge/test.tar.gz /home/hoge/testdir

↑の様に圧縮したとします。

これを同じ場所に解凍したいのです。

/home/hoge/test.tar.gz を /home/hoge/ のディレクトリの中から下記の様に解凍します。

tar zxvf /home/hoge/test.tar.gz

すると、/home/hoge/home/hoge/testdir/ に解凍されてしまいます。


試しに
tar zxvf /home/hoge/test.tar.gz /

と言う感じに指定できたら、問題解決なんですが・・・これはできませんでした。
/に移動してからコマンドを発行ということも訳あってできません。

というのもPHPのプログラム上からsystemコマンドで圧縮と解凍をしているのですが、
解凍すると、PHPがあるディレクトリからの相対パスに解凍されてしまいます。

指定した場所に解凍するということはできませんでしょうか?

tar --help でみてみたのですが、それらしきオプションは探せませんでした。


zipはまだ使ったことありませんが、こちらを使った方がサーバーへの負荷や扱いやすさでは上なのでしょうか?

ご教授お願い致します。

A 回答 (4件)

通常のコマンドラインからは、ターゲットとなるディレクトリを相対パスでアーカイブすれば、皆さんがご回答しているように「-C」オプションで所望の結果を得ることができます。



> cd /home/hoge ; tar zcvf test.tar.gz testdir
> tar zxvf test.tar.gz -C /home/hoge


あるいはアーカイブ、および展開する際、絶対パスで扱うよう「-P」オプションを指定します。

> tar zcvf /home/hoge/test.tar.gz /home/hoge/testdir -P
> tar zxvf /home/hoge/test.tar.gz -P
    • good
    • 2
この回答へのお礼

回答ありがとうございました。

-Cでエラーになっていたのは、記述する場所が悪かったようでした。
最後に-Cオプションを入れたらきちんと動作しました。

ありがとうございました。

お礼日時:2007/06/15 10:04

tar zxvf /home/hoge/test.tar.gz --directory=/home/hoge


みたいのは?
    • good
    • 0
この回答へのお礼

-Cオプションでできたので、試しておりませんが、機会があったら試してみます。ご回答ありがとうございました。

お礼日時:2007/06/15 10:05

展開先のディレクトリは指定しました?



tar xzf /home/hoge/test.tar.gz -C /
とか
tar zx -C / -f /home/hoge/test.tar.gz
とかでいけると思うんですが。
# Optionの順番変えているだけなんで書いてある内容は両者同じです
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

これはやりました。その結果がNo1さんの回答の補足になります。

お礼日時:2007/06/15 09:53

Cオプションでできませんか?

この回答への補足

やってみたのですが、エラーになってしまいました。

ヘルプでは下記の様に出てきます。
-C, --directory=DIR change to directory DIR

エラーメッセージは下記です。
tar: -C: open 不能: そのようなファイルやディレクトリはありません
tar: エラーを回復できません: 直ちに終了します
tar: Child returned status 2

これは、圧縮時に指定するオプションでしょうか?

補足日時:2007/06/14 20:23
    • good
    • 0
この回答へのお礼

やっとできました。-Cの場所が悪かったみたいでした。
解凍したいファイルを記述した後にこのオプションを入れたらきちんと動作しました。

解凍したいファイル名の前にこのオプション入れたらエラーになります。

解決しました。ありがとうございました。

お礼日時:2007/06/15 10:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!