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

Bak*_*yor 5 server archive backup tar

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

tar jcf "home/username/forum/forum.tar.bz2" /var/www/forum/
Run Code Online (Sandbox Code Playgroud)

然后我提取使用:

tar jxf forum.tar.bz2 ./
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Lek*_*eyn 12

除了dv3500ea的回答,您可以使用下一个命令包含提取tar包var/www/forum/forum/

tar xjf forum.tar.bz2 --strip-components=2
Run Code Online (Sandbox Code Playgroud)

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

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

tar tjf forum.tar.bz2
Run Code Online (Sandbox Code Playgroud)

管道通过,less以便您使用箭头键进行滚动。

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

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


dv3*_*0ea 6

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

tar jcf home/username/forum/forum.tar.bz2 -C /var/www/ forum
Run Code Online (Sandbox Code Playgroud)

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

tar jxf forum.tar.bz2 ./
Run Code Online (Sandbox Code Playgroud)