相対パスを持つtar


24

相対パスを使用してtarでアーカイブを作成しようとしています。次のコマンドを使用します。

tar czf ~/files/wp/my-page-order.tar.gz -C ~/webapps/zers/wp-content/plugins/ ~/webapps/zers/wp-content/plugins/my-page-order

ただし、アーカイブファイルにはまだ絶対パスがあります。相対パスでtarを使用するにはどうすればよいですか?


回答:


24

「〜」はシェルによって展開されます。-Cで「〜」を使用しないでください。

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~ \
       webapps/zers/wp-content/plugins/my-page-order

(tarにはwebapps / zers / wp-content / plugins / my-page-orderパスが含まれます)または

tar czf ~/files/wp/my-page-order.tar.gz \
      -C ~/webapps/zers/wp-content/plugins \
       my-page-order

(tarにはmy-page-orderパスが含まれます)

または、最初にcdするだけです。...

cd ~/webapps/zers/wp-content/plugins
tar czf ~/files/wp/my-page-order.tar.gz my-page-order

2
説明が間違っています。ここではがシェルによって展開されることは重要ではありません。重要なのは-CLekensteynによるanwerで説明されているように、現在の作業ディレクトリを変更することです。
ピョートルドブロゴスト

1
いいえ-元の質問を見てください-最後の引数は絶対パスです。
symcbean

だから何?〜の両方のインスタンスが展開され、使用する場合の最後の引数が-C相対パスとして指定されるべきである代わりに絶対パスとして指定されるため、呼び出し全体が期待どおりに機能しません。ここでを使用することはまったく問題ではありません。
ピョートルドブロゴスト

11

-C new_cwd現在の作業ディレクトリをに変更しnew_cwdます。次に、次の引数がに対して評価されnew_cwdます。

tar czf〜/ files / wp / my-page-order.tar.gz -C〜/ webapps / zers / wp-content / plugins / my-page-order


4

非GNUソリューションにtar-zオプションがありません。

pushd ~/files/wp; tar cvf - my-page-order | gzip > my-page-order.tar.gz && rm -rf my-page-order; popd

編集(の&&有無にかかわらずrm):

pushd ~/files/wp && tar cvf - my-page-order | gzip > my-page-order.tar.gz && popd

(1)質問は何も言わないrm; なぜあなたは答えにそれを含めるのですか?(2)あなたの答えは間違ったディレクトリをアーカイブします。(3)なぜ変更しましたtar -ztar | gzip?(4)を使用する&&場合は、おそらくの&&後でも使用する必要がpushdあります。
G-Manが「Reinstate Monica」と言う

(1)正解(2)本当に?どちらが良いですか?(3)これがポイントです:tarの非GNUバージョン(例:Unix)にはありません-z (4)おそらく&&スクリプトで使用しますが、これは「1つのライナー」では必要ないと思います
Mattia72

(2)OPが~/webapps/zers/wp-content/plugins/my-page-order出力をアーカイブしたい~/files/wp/my-page-order.tar.gz; コマンドアーカイブ~/files/wp/my-page-order。(3)回答を編集して、を使用しgzipた理由を説明していただきありがとうございます。
G-Manによる「Reinstate Monica」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.