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

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

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

10
задан 6 August 2014 в 00:21

3 ответа

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

0
ответ дан 6 August 2014 в 00:21

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

0
ответ дан 6 August 2014 в 00:21

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

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

1
ответ дан 20 December 2019 в 05:13

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

Похожие вопросы: