Come appare il messaggio
gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting nowCause frequenti
- Download o copia interrotti: il file è più corto di quanto annunciato.
- Durante la creazione il disco si è riempito o il processo è stato terminato.
- Un trasferimento in modalità ASCII ha modificato i byte, per esempio via FTP.
- L'archivio è stato letto mentre veniva scritto o si trova su un filesystem con errori.
- Il file è stato modificato dopo la creazione, per esempio da uno
scpincompleto.
Verifica
- Verifica la compressione
gzip -t backup.tar.gz; echo "exit=$?" - Controlla l'archivio senza estrarlo
tar -tzf backup.tar.gz > /dev/null; echo "exit=$?" - Dimensione e checksum
ls -l backup.tar.gz; sha256sum backup.tar.gz - Fino a dove è leggibile?
tar -tzf backup.tar.gz 2>/dev/null | tail -n 5
Soluzione
- Scarica o ricrea l'archivio finché la sorgente esiste. È la strada pulita.
- Con un archivio parziale recupera le parti leggibili:
tar -xzf backup.tar.gz --ignore-zerosoppuregzip -dc backup.tar.gz | tar -x. - Usa
gzip -dc | tar -tvper capire fino a dove i dati sono leggibili. - Salva un checksum dopo la creazione e confrontalo prima del ripristino.
- Non scrivere i backup sullo stesso filesystem della sorgente e controlla l'exit code della creazione.
Domande frequenti
Posso riparare un gz rotto?
Non del tutto. Le parti leggibili si estraggono, ma i byte mancanti sono persi.
Perché l'archivio è più piccolo del previsto?
La scrittura è stata interrotta: disco pieno, processo terminato o trasferimento abortito.