web-dev-qa-db-ja.com

tar:親ディレクトリに「cd」していない任意の先行ディレクトリを含むtarファイルを作成する方法

私がファイルのディレクトリを持っているとしましょう

/home/user1/dir1

そして、主なディレクトリとして「dir1」のみを使用してtarを作成します。

/dir1/file1
/dir1/file2

私は最初にディレクトリにcdできることを知っています

cd /home/user1/
tar czvf dir1.tar.gz dir1

しかし、スクリプトを書くとき、ディレクトリからディレクトリへジャンプすることは必ずしも好ましいことではありません。現在のディレクトリを変更せずに絶対パスでそれを行う方法はあるのでしょうか?

私は常に絶対パスを含むtarファイルを作成して使用できることを知っています

--strip-components 

抽出時、ただし追加のパス名は、tarファイルと一緒に配布したくない追加のプライベート情報です。

ありがとう!

23
Yan

tar -Cはディレクトリを変更します

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

ところで、ディレクトリの変更を追跡するのに便利なものです... pushdとpopdを使用してください。

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd
25
Philip Reynolds

Gnu tarを使用すると、実際のベースディレクトリとは異なるベースディレクトリでアーカイブを作成できます。

tar -c --transform 's,^\.,mybasedir,' .

Sedの表現をニーズに合わせてください。

OK、私もそれを知った

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

また、私が望む方法で動作しました。

5
Yan
tar -C /home/user1/dir -c .
2
Michael Graff