Answers:
这取决于是所有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>
问题在此处详细记录。
我发生了同样的事情,因为我通过不分隔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
RequestTTY yes
你的ssh_config中。可以通过明确禁用,-T Disable pseudo-tty allocation.
对于我来说,该错误tar: Skipping to next header
最初是当我尝试使用--posix
.. 时发生的唯一零块