Teer: Ein einsamer Nullblock bei 343398

10

Beim Versuch, eine tar.gz-Datei im Ubuntu-Terminal zu extrahieren, ist im letzten Satz ein Fehler aufgetreten: tar: Ein einzelner Nullblock bei 343398

Was ist die Lösung für dieses Problem?

wael
quelle

Antworten:

18

Es kommt darauf an, ob es mit allen tar.gzDateien oder nur mit dieser passiert . Diese bestimmte Datei ist möglicherweise beschädigt und wird daher nicht ordnungsgemäß geöffnet. Wenn Sie tar zum Extrahieren verwenden, müssen Sie die zOption verwenden, da dies erforderlich ist, wenn ein Archiv komprimiert wird : tar xzvf <file.tar.gz>. Alternativ lohnt es sich auch, es mit zu extrahierengunzip <file.tar.gz>

Führen Sie Folgendes aus, um festzustellen, ob die Datei beschädigt ist gzip -t <file.tar.gz>. Dieser Befehl überprüft die Datei auf Fehler. Wenn diese gefunden werden, sollten sie im Terminal angezeigt werden. Dies sollte Ihnen sagen, ob die Datei beschädigt ist.

Wenn die Datei einwandfrei ist und der Fehler erneut auftritt, bedeutet dies wahrscheinlich, dass es sich um das bekannte Problem mit tar handelt, das auftritt, wenn eine Datei zero blocksam Ende kein Paar enthält , wie von GNU tar erwartet. Die Lösung hierfür besteht darin, die -iOption zum Ignorieren von hinzuzufügen zero blocks. So verwenden Sie tar ixzvf <file.tar.gz>Das Problem wird hier ausführlich dokumentiert .


quelle
1

Das gleiche ist mir passiert, weil ich sowohl stdout als auch stderr durch einen Kanal geleitet habe, der stderr und stdout nicht trennt (eine Android-AdB-Terminalsitzung).

Auf diese Weise landeten einige Fehlermeldungen im Stream. Dies war der fehlerhafte Befehl:

  • Fehlerhafter Befehl, ADB-Shell führt nur stderr und stdout lokal zusammen => Garbage! ::
    adb shell tar -cf - /some/dir \| uuencode bla | uudecode -o - > backup.tar

  • Behobener Befehl:
    adb shell tar -cf - /some/dir 2>/dev/null\| uuencode bla | uudecode -o - > backup.tar

Das gleiche passiert, wenn Sie einen ähnlichen Befehl über SSH ausführen, wie dieses schnelle Tar-Streaming über ssh, wenn Sie vergessen, stderr nach / dev / null umzuleiten:

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

ce4
quelle
1
Guter Fang. Es passiert auch , wenn Sie RequestTTY yesin Ihrer ssh_config festlegen. Kann explizit deaktiviert werden mit -T Disable pseudo-tty allocation.Für mich war der Fehler tar: Skipping to next headerursprünglich, der einsame --posix
Nullblock
0

Ich habe diesen Fehler neulich beim Versuch, ein Archiv zu entpacken, das nicht komprimiert wurde. Die Quelle der Datei war mir unbekannt, aber ich dachte mir, dass der Ersteller catmehrere Teere zu einem einzigen kombinieren könnte . Dies führte dazu, dass die Nullmarkierung am Dateiende vom tarDienstprogramm in der Mitte eines kombinierten Archivs gelesen wurde, wodurch der Fehler "Ein einzelner Nullblock" angezeigt wurde.

Wenn dies der Fall ist, kann die Option --ignore-zerosoder -ihelfen, diese Fehler zu unterdrücken. Bitte sehen Sie man taroder diesen Link als Referenz.

yerden
quelle