- ベストアンサー
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はまだ使ったことありませんが、こちらを使った方がサーバーへの負荷や扱いやすさでは上なのでしょうか? ご教授お願い致します。
- みんなの回答 (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
その他の回答 (3)
- gebageba
- ベストアンサー率37% (12/32)
tar zxvf /home/hoge/test.tar.gz --directory=/home/hoge みたいのは?
お礼
-Cオプションでできたので、試しておりませんが、機会があったら試してみます。ご回答ありがとうございました。
- Toshi0230
- ベストアンサー率51% (836/1635)
展開先のディレクトリは指定しました? tar xzf /home/hoge/test.tar.gz -C / とか tar zx -C / -f /home/hoge/test.tar.gz とかでいけると思うんですが。 # Optionの順番変えているだけなんで書いてある内容は両者同じです
お礼
ご回答ありがとうございます。 これはやりました。その結果がNo1さんの回答の補足になります。
- lowrider_2005
- ベストアンサー率40% (1520/3748)
Cオプションでできませんか?
お礼
やっとできました。-Cの場所が悪かったみたいでした。 解凍したいファイルを記述した後にこのオプションを入れたらきちんと動作しました。 解凍したいファイル名の前にこのオプション入れたらエラーになります。 解決しました。ありがとうございました。
補足
やってみたのですが、エラーになってしまいました。 ヘルプでは下記の様に出てきます。 -C, --directory=DIR change to directory DIR エラーメッセージは下記です。 tar: -C: open 不能: そのようなファイルやディレクトリはありません tar: エラーを回復できません: 直ちに終了します tar: Child returned status 2 これは、圧縮時に指定するオプションでしょうか?
お礼
回答ありがとうございました。 -Cでエラーになっていたのは、記述する場所が悪かったようでした。 最後に-Cオプションを入れたらきちんと動作しました。 ありがとうございました。