Ошибка Tar: Неожиданный EOF в архиве

Я смогу каталог, полный изображений JPEG:

tar cvfz myarchive.tar.gz mydirectory

Когда я распаковываю архив:

tar xvfz myarchive.tar.gz

Я получаю сообщение об ошибке:

tar: Unexpected EOF in archive

Глядя на вывод, он выходит из строя в середине одного изображения JPEG.

Что я делаю неправильно?

Ответ 1

Интересно. У меня есть несколько вопросов, которые могут указывать на проблему.

1/Вы разворачиваетесь на той же платформе, на которой вы набрасываетесь? Они могут быть разными версиями tar (например, GNU и old-unix)? Если они разные, можете ли вы разогнаться в той же коробке, на которой вы наклеились?

2/Что происходит, когда вы просто gunzip myarchive.tar.gz? Это работает? Возможно, ваш файл поврежден/усечен. Я предполагаю, что вы заметили бы, если сгенерированные ошибки сжатия, да?

На основе источника GNU tar он будет печатать только это сообщение, если find_next_block() возвращает 0 преждевременно, что обычно вызвано усеченным архивом.

Ответ 2

Возможно, у вас есть ftped файл в режиме ascii вместо двоичного режима? Если нет, это может помочь.

$gunzip myarchive.tar.gz

Затем распакуйте полученный tar файл с помощью

$tar xvf myarchive.tar

Надеюсь, что это поможет.

Ответ 3

У меня была аналогичная проблема с усеченными файлами tar, создаваемыми заданием cron, и перенаправление стандартного файла в файл исправляло проблему.

От общения с коллегой cron создает трубку и ограничивает объем вывода, который может быть отправлен на стандартную версию. Я исправил мой, удалив -v из моей команды tar, делая ее намного менее подробной и сохраняя вывод ошибки в том же месте, что и остальные мои задания cron. Если вам нужен подробный вывод tar, вам нужно будет перенаправить его в файл.

Ответ 4

В моем случае я начал распаковываться до того, как была загружена загрузка файла tar.

Ответ 5

У меня была похожая ошибка, но в моем случае причиной было переименование файла. Я создавал сжатый файл file1.tar.gz и неоднократно обновлял его в другом tarfile с помощью tar -uvf ./combined.tar ./file1.tar.gz. Я получил неожиданную ошибку EOF, когда после распаковки combined.tar и попытки распаковать file1.tar.gz.

Я заметил, что была разница в выводе file до и после tarring:

$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 не перезаписывает метаданные для gzipped имени файла. Решением было воссоздать combined.tar с нуля, а не обновлять его.

Я до сих пор точно не знаю, что произошло, поскольку изменение имени сжатого файла обычно не нарушает его.