我正在使用以下命令存档文件夹:
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
- 创建 tarballt
- 列出 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" .