2008-10-14 24 views
22

Ho un gran numero di file in un archivio .tar.gz. Controllo del tipo di file con il comandoCome posso recuperare i file da un archivio .tar.gz corrotto?

file SMS.tar.gz 

dà la risposta

gzip compressed data - deflate method , max compression 

Quando cerco di estrarre l'archivio con gunzip, dopo un ritardo che ricevo il messaggio

gunzip: SMS.tar.gz: unexpected end of file 

C'è un modo per recuperare anche parte dell'archivio?

risposta

15

Sei sicuro che si tratti di un file gzip? Per prima cosa eseguo 'file SMS.tar.gz' per confermarlo.

Quindi vorrei leggere la pagina The gzip Recovery Toolkit.

+2

gzrecover non viene installato su Mac OS. Tuttavia, il metodo di Liudvikas Bukys ha funzionato bene. Aveva tcpdump collegato in gzip, ucciso con Control-C, EOF inatteso che tentava di decomprimere il file pipee. – George

+0

gzip Recovery Toolkit è straordinario. Grazie! – Nemo

29

Il ripristino è possibile ma dipende da cosa ha causato il danneggiamento.

Se il file è solo troncato, ottenere risultati parziali non è troppo difficile; basta eseguire

gunzip <SMS.tar.gz> SMS.tar.partial 

che darà un po 'di output nonostante l'errore alla fine.

Se il file compresso ha grandi blocchi mancanti, è fondamentalmente senza speranza dopo il blocco errato.

Se il file compresso viene corrotto sistematicamente in piccoli modi (ad esempio, il trasferimento del file binario in modalità ASCII, che causa ritorni a capo e righe nuove nel file), è possibile ripristinarlo ma richiede un po 'di programmazione personalizzata, è ne vale davvero la pena se non hai assolutamente nessun altro ricorso (nessun backup) e i dati valgono un grande sforzo. (L'ho fatto con successo.) Ho menzionato questo scenario in un previous question.

Le risposte per i file .zip differire in qualche modo, dal momento che gli archivi zip hanno più membri separatamente-compressi, quindi non c'è più speranza (anche se la maggior parte degli strumenti commerciali sono piuttosto fasullo, eliminano gli avvertimenti di CRC patch, non attraverso il recupero di dati di buona qualità). Ma la tua domanda riguardava un file .tar.gz, che è un archivio con un membro grande.

+0

Probabilmente ci sarà un file illeggibile dopo questa procedura. Fortunatamente, c'è uno strumento per risolvere questo problema e ottenere anche i dati parziali: http://riaschissl.bestsolution.at/2015/03/repair-corrupt-tar-archives-the-better-way/ – JohnEye

3

Ecco uno scenario possibile che abbiamo incontrato. Abbiamo avuto un file tar.gz che non decomprimere, cercando di decomprimere ha dato l'errore:

gzip -d A.tar.gz 
gzip: A.tar.gz: invalid compressed data--format violated 

ho capito che il file può originariamente caricato su una connessione non ftp binario (non sappiamo di sicuro).

La soluzione è stata relativamente semplice utilizzando l'utility UNIX dos2unix

dos2unix A.tar.gz 
dos2unix: converting file A.tar.gz to UNIX format ... 
tar -xvf A.tar 
file1.txt 
file2.txt 
....etc. 

Ha funzionato! Questa è una possibilità sottile, e forse vale la pena provare - potrebbe aiutare qualcuno là fuori.

+0

Questo problema è stato risolto per me – Shannow

Problemi correlati