焦油错误:存档中意外的EOF

时间:2009-08-25 03:18:57

标签: linux sysadmin

我tar目录是一个完整的JPEG图像:

tar cvfz myarchive.tar.gz mydirectory

当我解开档案时:

tar xvfz myarchive.tar.gz

我收到错误:

tar: Unexpected EOF in archive

查看输出,它在一个特定JPEG图像的中间失败。

我做错了什么?

5 个答案:

答案 0 :(得分:10)

有趣。我有几个问题可以指出问题。

1 /你是否在同一平台上进行训练?它们可能是tar的不同版本(例如,GNU和old-unix)?如果它们不同,你能解开你所用的同一个盒子吗?

2 /当你只是用gunzip myarchive.tar.gz时会发生什么?那样有用吗?也许你的文件被破坏/截断了。我假设你会注意到压缩产生了错误,是吗?

基于GNU tar源,它只会在find_next_block()过早返回0时打印该消息,这通常是由截断的归档引起的。

答案 1 :(得分:7)

可能是你用ascii模式而不是二进制模式来处理文件? 如果没有,这可能有所帮助。

$ gunzip myarchive.tar.gz

然后使用

解压缩生成的tar文件

$ tar xvf myarchive.tar

希望这有帮助。

答案 2 :(得分:6)

我遇到了类似的问题,即由cron作业生成截断的tar文件,并将标准重定向到修复该问题的文件。

通过与同事交谈,cron创建了一个管道并限制了可以发送到标准输出的输出量。我通过从我的tar命令中删除-v来修复我的问题,使其更加冗长,并将错误输出保持在与其余cron作业相同的位置。如果您需要详细的tar输出,则需要重定向到文件。

答案 3 :(得分:2)

就我而言,在tar文件上传完成之前我已经开始解压了。

答案 4 :(得分:0)

我有一个类似的错误,但我的原因是文件重命名。我正在创建一个压缩文件file1.tar.gz,并用tar -uvf ./combined.tar ./file1.tar.gz在另一个tarfile中重复更新。取消解压缩combined.tar并尝试解压缩file1.tar.gz后,出现意外的EOF错误。

我注意到在脱皮前后file的输出有所不同:

$file file1.tar.gz
file1.tar.gz: gzip compressed data, was "file1.tar", last modified: Mon Jul 29 12:00:00 2019, from Unix
$tar xvf combined.tar
$file file1.tar.gz
file1.tar.gz: gzip compressed data, was "file_old.tar", last modified: Mon Jul 29 12:00:00 2019, from Unix

因此,当我最初创建combined.tar时,该文件似乎具有不同的名称,并且使用tar更新功能不会覆盖压缩后的文件名的元数据。解决方案是从头开始创建combined.tar而不是对其进行更新。

我仍然不知道到底发生了什么,因为更改压缩文件的名称通常不会破坏该文件。