Ответы:
Это зависит от того, происходит ли это со всеми 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>
Вопрос подробно описан здесь .
То же самое произошло со мной, потому что я пропустил и 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
Я получил эту ошибку на днях, пытаясь распаковать архив, который не был распакован. Источник файла был мне неизвестен, но я подумал, что создатель мог бы использовать cat
для объединения нескольких таров в один. Это привело к тому, что нулевой маркер конца файла был прочитан tar
утилитой в середине объединенного архива, таким образом отображая ошибку «Одинокий нулевой блок».
Если это так, то опция --ignore-zeros
или -i
может помочь подавить эти ошибки. Пожалуйста, смотрите man tar
или эту ссылку в качестве ссылки.
RequestTTY yes
в своем ssh_config. Может быть явно отключен с помощью-T Disable pseudo-tty allocation.
Для меня ошибка былаtar: Skipping to next header
изначально, когда я пытался с помощью--posix
... , одинокий нулевой блок произошел ..