tar cf /var/www/site.tar /var/www_bak/site
这将产生:
tar xf /var/www/site.tar -C /tmp
如何避免提取文件时创建整个目录树?
我要提取的内容为:
/tmp/var/www/site
#1 楼
为什么在创建时不使用-C
选项:$ tar cf /var/www/site.tar -C /var/www_bak/ site
#2 楼
您要使用--strip-components=NUMBER
的tar
选项: --strip-components=NUMBER
strip NUMBER leading components from file names on extraction
您的命令将是:
tar xfz /var/www/site.gz --strip-components=2 -C /tmp
评论
这个答案更好,因为您无需在创建tar之前考虑它。您可以将其与已经创建的tar文件一起使用。谢谢@MikeyB!
–法比恩·夸特拉沃(Fabien Quatravaux)
2014年3月25日在8:39
我很高兴地报告在GNU tar和BSD tar中都可以使用。
–内森·奥斯曼(Nathan Osman)
16年6月20日在22:07
并且因为您可能不是tar创建者...(或者如果您正在使用其他工具执行该操作,而该工具却做了愚蠢的事情...)
– xenoterracide
16年8月13日在4:58
@FabienQuatravaux好吧,是的-如果您犯了一个错误,并且创建了一个归档文件,其中包含在提取过程中不希望看到的主要目录。但是,建立存档时首先要避免出现不需要的目录,这显然更加清楚。
–卡拉夫
18年15月15日在12:13
这是正确的答案!
–壁虎
19年6月12日在17:57
评论
TMTOWTDI。使用相同的-C选项也可以工作;)
– MikeyB
2011年11月11日17:27
他想从一些主要组件中删除路径,而不是更改输出目录。请参阅以下正确答案。
–aymericbeaumet
15年7月28日在13:50
当其他人准备存档时,我们将无法使用它。
–user145545
18年6月16日在19:42
因为```_t = prefix-$(date +%Y%m%d); tar -cjf“ .backups / $ _ t.tar.bz2” --transform =“ s#^(\ ./)?#$ _ t /#x;” -文件...; tar -df“ .backups / $ _ t.tar.bz2” --strip-components = 1```
– AnrDaemon
18/09/3在15:36