我要tar X目录不包括其父目录


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

但是,当我提取时,我也会得到它的父母

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

该tar命令之所以能够成功,是因为它的父项中不包含其他任何内容(user例如其他文件夹)。

我想以编程方式执行此操作,因此将当前工作目录更改/home/user/为不是真正的选择。有可能这样做吗?

Answers:


17

您可以使用该-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很酷.. -C当我翻阅手册页时,我刚刚找到了开关,但听不懂..听起来更像是在解压缩期间使用它。学到了新东西。
Levon 2012年

@凯文谢谢。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文件的顶级目录,则应该不会出现此问题。即

cdusertar高达.project..你可以指定在tar文件目的地/var/... 如前。

或者有没有你不想要/一个原因不能cduser


是。那将是一种解决方案。谢谢。但我希望有更好的方法?我想和这个程序联盟打交道,并且我不想一直os.chdir(base_dir)在我的代码中发布:),所以如果有解决办法,那就太好了。谢谢
User007 2012年

@ User007啊..好的,我知道了。您可能需要更新您的问题以包括该要求。顺便说一句,不错的用户ID :)
Levon 2012年

谢谢。是。我刚刚更新了我的问题。哦,这是隐藏我的身份...
User007 2012年

1
@ User007喜欢007部分..并且看起来您也在Python中工作(这也是我的最爱之一)
Levon 2012年

:)是的。好吧,我们的朋友Kevin用正确的命令帮助了我。所以我给他打勾。但是我支持你。谢谢!
User007 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.