当我在 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
打包的流有故障(这仅在打包档案时发生)。