web-dev-qa-db-fra.com

L'extraction d'un fichier tar.gz renvoie: «Cela ne ressemble pas à une archive tar.»

J'ai un fichier tar.gz et je veux l'extraire en utilisant un terminal. J'ai utilisé les commandes suivantes: tar tvzf ldtp_3.5.0.orig.tar.gz et tar -xvzf ldtp_3.5.0.orig.tar.gz. Cependant, j'obtiens le même résultat pour les deux fichiers:

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

Je sortie de la commande de fichier montre son un fichier gzip:

$ file ldtp_3.5.0.orig.tar.gz 
ldtp_3.5.0.orig.tar.gz: gzip compressed data, from Unix

Je peux l'extraire en utilisant le clic droit -> Extraire mais je veux le faire en utilisant un terminal. Quelqu'un peut-il me dire comment faire cela?

24
TheRookierLearner

En regardant l’erreur que vous voyez, associée au fait que vous pouvez effectivement décompresser, cela indique que le fichier est une véritable archive TAR/Gzip, mais qu’il n’est peut-être pas créé de fichier TAR immédiat après le fichier Gzip.

Cela signifie que si vous avez téléchargé cela depuis un serveur Web, la compression Gzip est parfois appliquée au contenu Web au niveau du serveur pour accélérer le téléchargement du contenu. Mais s'il n'est pas configuré correctement sur le serveur pour ignorer un contenu déjà compressé, il peut par inadvertance doubler les fichiers Gzip.

En gardant cela à l'esprit, je verrais si, simplement, supprimez Gzip de la ligne de commande pour voir ce qui se passe. Utilisez une commande comme celle-ci:

gzip -d ldtp_3.5.0.orig.tar.gz

Et voir quel est le fichier résultant. J'ai un drôle de sentiment après avoir exécuté cette commande, vous ne verrez pas un ldtp_3.5.0.orig.tar dans le répertoire, mais plutôt un fichier portant le même nom que la source —ldtp_3.5.0.orig.tar.gz—, mais peut-être avec une modification modifiée? Si tel est le cas, il s'agit vraiment d'un double gzip. Donc, à ce stade - après ce premier non-Gzip - vous pouvez exécuter la commande tar que vous avez comme ceci:

tar -xvzf ldtp_3.5.0.orig.tar.gz

Et il devrait maintenant décompresser correctement l’archive TAR complète.

Une autre façon de faire quelque chose de similaire à ce processus en deux étapes consiste à diriger la sortie de gzip vers tar comme ceci:

gzip -dc ldtp_3.5.0.orig.tar.gz | tar -xvzf -

La c dans la gzip ainsi que le - à la fin de la commande est la clé:

  • L'option c pour gzip indiquera à gzip de décompresser dans le flux de sortie standard.
  • Le - à la fin de la commande tar signifie "utiliser l'entrée standard". Ainsi couplé avec le -c dans gzip, le canal prendra ensuite le flux de sortie standard qui lui a été acheminé de gzip et le connectera à l'entrée standard dans tar.
33
JakeGould