• ベストアンサー

tarで圧縮したファイルの解凍時の保存先指定

こんにちは、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はまだ使ったことありませんが、こちらを使った方がサーバーへの負荷や扱いやすさでは上なのでしょうか? ご教授お願い致します。

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

  • ベストアンサー
  • lunarosa
  • ベストアンサー率73% (30/41)
回答No.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

Antares
質問者

お礼

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

その他の回答 (3)

  • gebageba
  • ベストアンサー率37% (12/32)
回答No.3

tar zxvf /home/hoge/test.tar.gz --directory=/home/hoge みたいのは?

Antares
質問者

お礼

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

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.2

展開先のディレクトリは指定しました? tar xzf /home/hoge/test.tar.gz -C / とか tar zx -C / -f /home/hoge/test.tar.gz とかでいけると思うんですが。 # Optionの順番変えているだけなんで書いてある内容は両者同じです

Antares
質問者

お礼

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

回答No.1

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

Antares
質問者

お礼

やっとできました。-Cの場所が悪かったみたいでした。 解凍したいファイルを記述した後にこのオプションを入れたらきちんと動作しました。 解凍したいファイル名の前にこのオプション入れたらエラーになります。 解決しました。ありがとうございました。

Antares
質問者

補足

やってみたのですが、エラーになってしまいました。 ヘルプでは下記の様に出てきます。 -C, --directory=DIR change to directory DIR エラーメッセージは下記です。 tar: -C: open 不能: そのようなファイルやディレクトリはありません tar: エラーを回復できません: 直ちに終了します tar: Child returned status 2 これは、圧縮時に指定するオプションでしょうか?

関連するQ&A