親を含まないXディレクトリをtarしたい


9
tar cvf /var/lib/backup/sample.tar /home/user/.project

しかし、抽出すると、その親も取得します

/backup/
  - /home/
     - /user/
        - .project/

このtarコマンドは、親(userたとえば、下にある他のフォルダー)に他の何も含まないため、うまく機能します。

これをプログラムで実行したいので、現在の作業ディレクトリをに変更することは/home/user/実際にはオプションではありません。それは可能ですか?

回答:


17

tarする前-C/home/userディレクトリに移動するオプションを使用するか--strip-components 2、抽出時に使用することができます。

tar cvfC /var/lib/backup/sample.tar /home/user .project
#                              Note the space ^
tar cvf /var/lib/backup/sample.tar /home/user/.project
tar Cxf /backup /var/lib/backup/sample.tar --strip-components 2

1
+1かっこいい.. manページを-C調べているときにスイッチを見つけたが、理解できなかった.. untar中に使用されるように聞こえた。新しいことを学びました。
Levon

@ケビンありがとう。Cオプションは問題なく動作します。ありがとうございました!
User007 2012年

2
このように動作させることができませんでした。読んでgnu.org/software/tar/manual/tar.html#SEC118私は次のフォームで成功しました:tar cvf /var/lib/backup/sample.tar -C / home / user .project
Aivar

2

ファイルcdを作成したいトップレベルのディレクトリに移動すればtar、この問題は発生しないはずです。つまり、

cdto userおよびtarup .project.. /var/... 以前のようにtarファイルの宛先を指定できます。

それとも、/できないしたくない理由があるcdためにはuser


はい。それが一つの解決策になるでしょう。ありがとう。しかし、もっと良い方法があるといいのですが?私はこのプログラム的な同盟国と取引したいと思います、そして私はos.chdir(base_dir)いつも私のコードで発行したくないので:) これからの方法があるならばそれは素晴らしいでしょう。ありがとう
User007

@ User007ああ..わかりました。質問を更新して、その要件を含めることができます。ところで素敵なユーザーID :)
Levon

ありがとう。はい。質問を更新しました。ああ、それは私のアイデンティティを隠すことです...
User007 '25

1
@ User007は007の部分が大好きで、Pythonでも作業しているようです(これも私のお気に入りの1つです)
Levon

:) はい。よし、私たちの友人Kevinは正しいコマンドで助けてくれた。だから私は彼にカチカチを与えます。しかし、私はあなたを賛成しました。ありがとう!
User007 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.