如何提取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" .