Question

J'ai un grand nombre de fichiers dans une archive .tar.gz. Vérification du type de fichier avec la commande

file SMS.tar.gz

donne la réponse

gzip compressed data - deflate method , max compression

Lorsque j'essaie d'extraire l'archive avec gunzip, je reçois le message après un délai

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

Existe-t-il un moyen de récupérer même une partie de l'archive?

Était-ce utile?

La solution

Êtes-vous sûr que c'est un fichier gzip? Je voudrais d’abord exécuter le fichier SMS.tar.gz pour le valider.

Ensuite, je lirais la page de la boîte à outils de récupération gzip .

Autres conseils

La récupération est possible mais cela dépend de la cause de la corruption.

Si le fichier est simplement tronqué, obtenir un résultat partiel n’est pas trop difficile; il suffit de courir

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

qui donnera une sortie malgré l'erreur à la fin.

Si le fichier compressé a de gros blocs manquants, il est fondamentalement sans espoir après le mauvais bloc.

Si le fichier compressé est systématiquement corrompu de manière modeste (par exemple, transfert du fichier binaire en mode ASCII, qui écrase les retours à la ligne et les retours à la ligne dans tout le fichier), il est possible de restaurer le fichier mais cela nécessite un peu de programmation personnalisée. ne vaut que si vous n’avez absolument aucun autre recours (pas de sauvegarde) et que les données valent beaucoup d’efforts. (Je l'ai fait avec succès.) J'ai mentionné ce scénario dans une question précédente . .

Les réponses pour les fichiers .zip diffèrent quelque peu, car les archives zip ont plusieurs membres compressés séparément. Il y a donc plus d'espoir (bien que les outils commerciaux soient plutôt fictifs, ils éliminent les avertissements en appliquant des correctifs aux CRC, pas en récupérant de bonnes données). Mais votre question portait sur un fichier .tar.gz, qui est une archive avec un seul membre.

Voici un scénario possible que nous avons rencontré. Nous avions un fichier tar.gz qui ne décompressait pas, essayer de décompresser a donné l'erreur:

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

J'ai découvert que le fichier peut avoir été chargé à l'origine via une connexion ftp non binaire (nous ne le savons pas avec certitude).

La solution était relativement simple avec l'utilitaire unix dos2unix

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

Cela a fonctionné! C’est une possibilité mince, et peut-être la peine d’essayer - cela peut aider quelqu'un.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top