我该如何解决错误“tar: 60140 处有一个零块”?

我该如何解决错误“tar: 60140 处有一个零块”?

当我在 Linux 中打开用 winace 创建的 tar.gz 文件时,出现错误tar vxzf package.tar.gz

tar: A lone zero block at 60140

答案1

听起来您丢失了硬盘中保存该 tarball 的某个扇区,因此该文件的该块全为零。您可能需要再次下载它,或者从备份或其他地方恢复。

若要获取有关该文件的第二意见,请尝试使用 解压缩它gunzip,然后使用 解压它tar xvf ...

您可能还想读取硬盘上的 SMART 计数器,看看它是否报告了任何待定、重新映射或重新分配的坏扇区。如果发现任何坏扇区,请尽可能地从硬盘中取出所有内容(或者,如果您有足够多的近期备份,请在某处测试您的备份,以确保您可以从中恢复所有内容),然后擦除硬盘,并选择将零或随机数据写入驱动器的每个扇区。这是强制硬盘重新映射任何坏扇区的唯一方法。但是,一旦硬盘开始出现扇区故障,可能就该更换驱动器了。

答案2

这可能是一个错误构造的.tgz文件。

孤零零的块就是这个意思。tar 文件由头块和文件内容交错组成(头决定了有多少个文件内容块)。然后文件以或更多的零块。

现在,如果只有一个零块并且文件在该块之后结束或者随后有非零块,GNUtar将写入此诊断信息并终止(就好像文件在那里正确结束一样)。

如果您丢失了硬盘的某些扇区,也可能会导致gzip显示错误(并且 tar 会对此做出反应),例如:

gzip: stdin: unexpected end of file 
tar: A lone zero block at 1754
tar: Child returned status 1
tar: Error is not recoverable: exiting now

同样,如果下载提前终止,gzip也会发出错误。如果没有这些错误,您就不太可能受到.tgz某种伤害(gzip很可能检测到 zip 流中的位错误并因此给出错误)。

鉴于 zip 流是一致的,人们会得出结论,.tar打包的流有故障(这仅在打包档案时发生)。

相关内容