我有一个 data_or.tar.bz 文件
我尝试用
$ tar xjvf data_or.tar.bz
输出为
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now
只能bz2
用命令提取文件吗tar
?
- 更新
$ file data_or.tar.bz
data_or.tar.bz: POSIX tar archive (GNU)
答案1
您的 tarball 未压缩。扩展.bz
已过时且具有误导性。
您可以使用以下命令解压缩:
tar xvf data_or.tar.bz
这里可能发生的情况是,它是使用开关(或)data_or.tar.bz
创建的,该开关从提供的扩展中选择了压缩算法。--auto-compress
tar -cavf
bzip2
压缩文件的正确扩展名是.bz2
,而压缩文件.bz
的扩展名是。bzip
bzip
使用算术编码(这是一种专利算法),因此bzip2
于 1997 年作为无专利替代方案创建。因此,bzip2
和bzip
不兼容。
tar
无法处理bzip
(解)压缩,因此--auto-compress
切换会导致未压缩的 tarball。
答案2
tar -xvjf 文件.tar.bz2>> 因为使用了标志‘j’,tar 命令将调用 bzip2 来处理解压缩。
报告的错误解释:
bzip2:(stdin)不是 bzip2 文件。>> bzip2 向父进程 (tar) 报告,接收到的要处理的文件不是 bz2 格式
tar:子进程返回状态 2>> tar 通过退出执行报告从 bzip2 子进程收到的错误状态。在 man 文档中,错误状态表示“2 表示压缩文件损坏”。由于 bzip2 无法识别该格式,因此它将其报告为“损坏”
tar:错误不可恢复:立即退出>> 根据孩子发来的信息,压缩文件不被接受处理
修复该问题的步骤:
1-验证压缩的格式
file file.tar.bz2
POSIX tar 档案(GNU)- “或者其他格式”,然后使用下一步 2 进行更正
2-- tar -xvf file.tar.bz2
“假设它是 posix tar 存档格式”