tar:位于343398的孤独零块


10

尝试在ubuntu终端中提取tar.gz文件时发生错误,这是他的最后一句话:tar:343398处的零零块

这个问题的解决方案是什么?

Answers:


18

这取决于是所有tar.gz文件还是仅此一个文件。此特定文件可能已损坏,因此无法正确打开。如果使用tar提取,则需要使用该z选项,因为压缩归档文件时这是必需的:tar xzvf <file.tar.gz>。或者,也值得尝试用gunzip <file.tar.gz>

要找出文件是否损坏,请运行gzip -t <file.tar.gz>;此命令将检查文件中的错误,如果发现任何错误,则应在终端中显示。这应该告诉您文件是否损坏。

如果文件是正确的,并且错误再次发生,则意味着当文件末尾没有一对时,可能是tar的已知问题zero blocks,这正是GNU tar期望的。解决方案是添加-i忽略该选项zero blocks。因此,使用tar ixzvf <file.tar.gz>问题在此处详细记录。


1

我发生了同样的事情,因为我通过不分隔stderr和stdout的通道(android adb终端会话)通过管道将stdout stderr 传送了。

这样一来,一些错误消息就会在流中结束。这是错误的命令:

  • 错误的命令,adb shell仅在本地合并stderr和stdout =>垃圾!:
    adb shell tar -cf - /some/dir \| uuencode bla | uudecode -o - > backup.tar

  • 固定命令:
    adb shell tar -cf - /some/dir 2>/dev/null\| uuencode bla | uudecode -o - > backup.tar

如果您忘记了将stderr重定向到/ dev / null,则通过SSH进行类似的命令(如通过ssh的快速tar流)会发生相同的情况:

ssh user@host tar -czf /some/remote/path 2\>/dev/null > /local/path/to/file.tar.gz


1
接得好。它发生,如果你设置RequestTTY yes你的ssh_config中。可以通过明确禁用,-T Disable pseudo-tty allocation.对于我来说,该错误tar: Skipping to next header最初是当我尝试使用--posix.. 时发生的唯一零块
。– eMPee584 2015年

0

前几天,我在尝试解压缩未压缩的存档时遇到了此错误。文件的来源对我来说是未知的,但我认为创建者可能会使用cat将多个tar组合为一个。这导致tar实用程序在组合存档的中间读取文件结尾零标记,从而显示“单独的零块”错误。

如果是这种情况,则--ignore-zerosor -i选项可能有助于抑制这些错误。请参阅man tar此链接作为参考。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.