tar:親ディレクトリへの 'cd'なしの任意の先行ディレクトリでtarファイルを作成する方法


23

ファイルのディレクトリがあります

/home/user1/dir1

そして、先頭のディレクトリとして「dir1」のみでtarを作成したい:

/dir1/file1
/dir1/file2

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

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

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

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

--strip-components 

抽出するとき、時々余分なパス名は、tarファイルで配布したくない余分な個人情報です。

ありがとう!

回答:


24

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

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

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

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
ありがとう。「-C」オプションを他のオプションの前に使用する必要があることを知りませんでした...「tar -cvzf dir1.tar.gz dir1 -C / home / user1 /」を試しましたが、機能しませんでした。
ヤン

1
動作しない:tar:dir:statできません:そのようなファイルまたはディレクトリはありません(dir1が/ home / user1 /の下にあると仮定)
tribbloid

21

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

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

sed式をニーズに合わせて調整してください。


5

OK、私もわかった

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

また、私が望むように働いた。


「*」などのワイルドカードはその後、ない仕事んが
カーティスYallop

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.