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

我如何提取 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文件夹中?

谢谢

答案1

此外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)要么是要创建的 tarball(tar cf file.tar.bz2

答案2

创建档案时,将-C /var/www/当前目录更改为 /var/www。

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

这将导致“论坛”文件夹位于存档的顶层,因此当您运行时将直接提取到当前文件夹中:

tar jxf forum.tar.bz2 ./

答案3

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

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

相关内容