So sieht die Meldung aus
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting nowHäufige Ursachen
- Download oder Kopie wurde abgebrochen, die Datei ist kürzer als angekündigt.
- Beim Erstellen lief die Platte voll oder der Prozess wurde beendet.
- Eine Übertragung im ASCII-Modus hat Bytes verändert, etwa per FTP.
- Das Archiv wurde während des Schreibens gelesen oder liegt auf einem Dateisystem mit Fehlern.
- Die Datei wurde nach dem Erstellen verändert, etwa durch ein unvollständiges
scp.
Prüfen
- Komprimierung testen
gzip -t backup.tar.gz; echo "exit=$?" - Archiv prüfen, ohne zu entpacken
tar -tzf backup.tar.gz > /dev/null; echo "exit=$?" - Größe und Prüfsumme
ls -l backup.tar.gz; sha256sum backup.tar.gz - Wie weit ist das Archiv lesbar?
tar -tzf backup.tar.gz 2>/dev/null | tail -n 5
Lösung
- Neu herunterladen oder neu erzeugen, solange die Quelle existiert. Das ist der saubere Weg.
- Bei unvollständigem Archiv die lesbaren Teile retten:
tar -xzf backup.tar.gz --ignore-zerosodergzip -dc backup.tar.gz | tar -x. - Mit
gzip -dc | tar -tvprüfen, bis wohin die Daten lesbar sind. - Künftig eine Prüfsumme nach dem Erstellen speichern und vor dem Zurückspielen vergleichen.
- Backups nicht auf dasselbe Dateisystem wie die Quelle schreiben und den Exitcode des Erstellens auswerten.
Häufige Fragen
Kann ich ein kaputtes gz reparieren?
Nicht vollständig. Die lesbaren Teile lassen sich extrahieren, die fehlenden Bytes sind verloren.
Warum ist das Archiv kleiner als erwartet?
Weil das Schreiben abgebrochen ist: voller Datenträger, beendeter Prozess oder abgebrochener Transfer.