如何只提取目标目录,而不提取完整的目录树?
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


评论


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

#2 楼

您要使用--strip-components=NUMBERtar选项:

 --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