- 締切済み
絶対パスでアーカイブされたファイルを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」と出て展開もされませんでした。 もしよろしければご教示願えませんでしょうか。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jpss7280
- ベストアンサー率55% (5/9)
プラットフォームが何かわからないので AIX での場合で。 pax コマンドの -s オプションを使用してください。 -s オプションは sed と同じ使用方法ができるので 絶対パスを相対パスに置換することができます。 他のプラットフォームでの同様の仕様があるのかはマニュアルを参照してください。 おそらく OS(pax コマンド) が UNIX03 準拠であればあるのではないかと。
- pthread
- ベストアンサー率42% (3/7)
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
既に同じような質問がありますよ。 pax コマンドを使うことで解決するようです。