• 締切済み

絶対パスでアーカイブされたファイルをtarコマンドの相対パスで展開

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」と出て展開もされませんでした。 もしよろしければご教示願えませんでしょうか。 よろしくお願いいたします。

みんなの回答

  • jpss7280
  • ベストアンサー率55% (5/9)
回答No.3

プラットフォームが何かわからないので AIX での場合で。 pax コマンドの -s オプションを使用してください。 -s オプションは sed と同じ使用方法ができるので 絶対パスを相対パスに置換することができます。 他のプラットフォームでの同様の仕様があるのかはマニュアルを参照してください。 おそらく OS(pax コマンド) が UNIX03 準拠であればあるのではないかと。

  • pthread
  • ベストアンサー率42% (3/7)
回答No.2

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/6m9ptvr58?l=ja&a=view&q=tar

noname#227025
noname#227025
回答No.1

既に同じような質問がありますよ。 pax コマンドを使うことで解決するようです。

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