dポイントプレゼントキャンペーン実施中!

UNIXコマンドの「tarコマンド」についての質問です。

ファイルを絶対パスを用いてアーカイブをかけた場合、アーカイブファイルの展開時に、絶対パスで展開させず相対パスで展開させる方法がわかりません。

test.logを絶対パスを用いてアーカイブします。
%pwd
/export/home
%ls
test.log
%tar -cvf test.tar /export/home/test.log
%ls
test.log test.tar
%rm test.log
%ls
test.tar


このアーカイブファイルを別ディレクトリに移動
%mv /export/home/test.tar /export/home/test/test.tar

自身もディレクトリ移動
%cd /export/home/test
%ls
test.tar

このような条件でアーカイブファイルの展開を実行
%tar -xvf test.tar
%ls
test.tar

/export/home/testのディレクトリでは展開されず下記のように
絶対パスで指定したディレクトリに展開されます。
%cd /export/home/test
%ls
test.log


インターネットで調べたところ
%tar -xvf test.tar -C /export/home/test
で実行すれば相対パスで展開できると記述があったのですが
うまくできませんでした。
上記のコマンドで実行したところ得にはエラーは出ず
メッセージが「tar:ブロックサイズ=4」と出て展開もされませんでした。

もしよろしければご教示願えませんでしょうか。

よろしくお願いいたします。

A 回答 (3件)

プラットフォームが何かわからないので AIX での場合で。



pax コマンドの -s オプションを使用してください。

-s オプションは sed と同じ使用方法ができるので
絶対パスを相対パスに置換することができます。

他のプラットフォームでの同様の仕様があるのかはマニュアルを参照してください。
おそらく OS(pax コマンド) が UNIX03 準拠であればあるのではないかと。
    • good
    • 0

Solarisのtarは、絶対パスで保管してしまったら相対パスで抽出できません。


paxでパスを変換しながら展開します。

http://oshiete1.goo.ne.jp/qa1711929.html

-Cオプションは tar c あるいは tar r で使用します。
これで相対パスで格納することができます。

%tar cvf test.tar -C /export/home ./test.log
%tar tvf test.tar
./test.log

http://docs.sun.com/app/docs/doc/816-3518/6m9ptv …
    • good
    • 1

既に同じような質問がありますよ。


pax コマンドを使うことで解決するようです。

参考URL:http://oshiete1.goo.ne.jp/qa1711929.html
    • good
    • 1

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