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

10

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

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

Ваель
источник

Ответы:

18

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


источник
1

То же самое произошло со мной, потому что я пропустил и 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

CE4
источник
1
Хороший улов. Это также происходит, если вы установили RequestTTY yesв своем ssh_config. Может быть явно отключен с помощью -T Disable pseudo-tty allocation.Для меня ошибка была tar: Skipping to next headerизначально, когда я пытался с помощью --posix... , одинокий нулевой блок произошел ..
eMPee584
0

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

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

Yerden
источник