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?
Es kommt darauf an, ob es mit allen tar.gz
Dateien 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 z
Option 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 blocks
am Ende kein Paar enthält , wie von GNU tar erwartet. Die Lösung hierfür besteht darin, die -i
Option zum Ignorieren von hinzuzufügen zero blocks
. So verwenden Sie tar ixzvf <file.tar.gz>
Das Problem wird hier ausführlich dokumentiert .
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
RequestTTY yes
in Ihrer ssh_config festlegen. Kann explizit deaktiviert werden mit-T Disable pseudo-tty allocation.
Für mich war der Fehlertar: Skipping to next header
ursprünglich, der einsame--posix
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
cat
mehrere Teere zu einem einzigen kombinieren könnte . Dies führte dazu, dass die Nullmarkierung am Dateiende vomtar
Dienstprogramm 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-zeros
oder-i
helfen, diese Fehler zu unterdrücken. Bitte sehen Sieman tar
oder diesen Link als Referenz.quelle