如何提取tarball,跳过一些主要目录?

我正在使用以下命令归档文件夹:

tar jcf "home/username/forum/forum.tar.bz2" /var/www/forum/ 

然后我使用以下方法提取:

 tar jxf forum.tar.bz2 ./ 

它正确提取,但创建/home/username/forum/var/www/forum文件夹。 要将其解压缩到/home/username/forum文件夹,我需要做什么?

谢谢

创建存档时,使用-C /var/www/在创建存档时将当前目录更改为/ var / www。

 tar jcf home/username/forum/forum.tar.bz2 -C /var/www/ forum 

这将导致’forum’文件夹位于存档的顶层,因此在运行时将直接提取到当前文件夹:

 tar jxf forum.tar.bz2 ./ 

除了dv3500ea的答案 ,你可以使用下一个命令将包含var/www/forum/ tarball提取到forum/

 tar xjf forum.tar.bz2 --strip-components=2 

var/www/是两个路径组件,因此是2 --strip-components

如果您不确定tarball中的内容,请使用t选项:

 tar tjf forum.tar.bz2 

管道通过less所以你使用箭头键滚动。

关于所用选项的一般说明:

  • x – 提取tarball,我总是将它作为第一选项,因为查看命令的作用是最合乎逻辑的
  • c – 创建一个tarball
  • t – 列出tarball的内容
  • j – 使tar解压缩bzip2压缩的tarball。 对于.bz2扩展名,这是多余的,因此您也可以删除此选项
  • f – 此选项需要一个文件名作为参数,它是要提取的tarball( tar xf file.tar.bz2 )或创建的( tar cf file.tar.bz2

快速(也可能是错误的)解决方案是在tarring之前更改命令以更改目录。 IE:

 cd /var/www/forum; tar jcf "home/username/forum/forum.tar.bz2" .