tar: одинокий нулевой блок на 343398

При попытке извлечь файл tar.gz в терминал ubuntu произошла ошибка в последнем предложении: tar: одиночный нулевой блок в 343398

каково решение этой проблемы???

2 ответа

Зависит ли это от всего 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> Эта проблема подробно описана здесь.

На днях я получил эту ошибку, пытаясь распаковать архив, который не был сжат. Источник файла был мне неизвестен, но я решил, что создатель может использовать catобъединить несколько смол в одну. Это привело к тому, что нулевой маркер конца файла был прочитан tar в середине объединенного архива, отображая ошибку "Одинокий нулевой блок".

Если это так, то --ignore-zeros или -iопция может помочь подавить эти ошибки. Пожалуйста, посмотри man tarили по этой ссылке в качестве справки.

То же самое произошло со мной, потому что я передавал и stdout, и stderr через канал, который не разделяет stderr и stdout (терминальный сеанс Android ADB).

Таким образом, некоторые сообщения об ошибках попали в поток. Это была неисправная команда:

  • Неправильная команда, оболочка adb просто объединяет 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

То же самое произойдет, если вы выполните аналогичную команду для SSH, такую ​​как эта быстрая потоковая передача tar через ssh, если вы забудете перенаправить stderr в /dev/null:

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

Другие вопросы по тегам