Ошибка 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
с нуля, а не обновлять его.
Я до сих пор точно не знаю, что произошло, поскольку изменение имени сжатого файла обычно не нарушает его.