tar: Самотній нульовий блок на 343398


10

при спробі витягнути файл tar.gz в терміналі ubuntu сталася помилка в останньому реченні ось це: tar: Одинокий нульовий блок на 343398

яке рішення цієї проблеми ???

Відповіді:


18

Це залежить від того, чи буде це з усіма tar.gzфайлами або лише з цим. Цей файл може бути пошкодженим, тому не відкриється належним чином. При використанні смоли для вилучення, ви повинні використовувати 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 (сеанс adb-терміналу для android).

Таким чином, деякі повідомлення про помилки опинилися в потоці. Це була несправна команда:

  • Несправна команда, adb shell просто зливає 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, як ця швидка тар-стрімка через ssh, якщо ви забудете перенаправити stderr на / dev / null:

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


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

0

Я отримав цю помилку днями, намагаючись зняти архів, який не був gzipped. Джерело файлу мені було невідоме, але я подумав, що творець може використати catдля об'єднання декількох тар в одну. Це призвело до зчитування нульового маркера кінця файлу tarутилітою посеред комбінованого архіву, відображаючи помилку "Самотній нульовий блок".

Якщо це так, то варіант --ignore-zerosабо -iваріант може допомогти придушити ці помилки. Будь ласка, ознайомтесь із цим посиланнямman tar або як посилання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.