3 votes

Lister les fichiers d'un tarball sur internet

Pour lister le contenu d'une archive, je peux faire :

tar -tzvf mytarball.tar.gz

Mais cela ne fonctionne que pour les fichiers locaux. Quelqu'un peut-il m'indiquer comment le faire (si possible) pour les fichiers sur Internet ?

J'ai essayé avec un fichier

wget -q https://git-core.googlecode.com/files/git-1.8.0.tar.gz | tar -tzv

Mais donne

gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Error is not recoverable: exiting now

Est-ce que tar fonctionne correctement avec les flux pour le listing ? Existe-t-il des formats de compression qui le permettent (sans avoir à télécharger le fichier entier) ?

1voto

James Mertz Points 390

Votre commande serait travail, si vous avez dit wget pour transmettre le fichier téléchargé à stdout plutôt qu'un fichier :

wget -q -O /dev/stdout http://… | tar -tzv

Cependant, il sera nécessitent le téléchargement de l'ensemble du fichier, du moins pour les archives Tar et Zip. Le format Zip place son "répertoire" à la toute fin ; quant à Tar, il n'a pas de répertoire unique et se contente d'un flux linéaire de paires en-tête+données, de sorte que les noms de fichiers sont dispersés partout.

(Il devrait certainement y avoir des formats d'archives qui peuvent être répertoriés de cette façon, mais je ne connais pas les détails exacts de tout autre format existant).

1voto

Edit : Il n'est pas possible de lister le contenu d'un fichier sur Internet, à moins que le serveur ne dispose d'une API ou autre pour traiter le fichier et afficher les résultats. Vous devez télécharger le fichier localement et ensuite le traiter.

Cela devrait fonctionner.

wget -q https://git-core.googlecode.com/files/git-1.8.0.tar.gz && tar -tzvf git-1.8.0.tar.gz

Une partie de http://www.cyberciti.biz/faq/list-the-contents-of-a-tar-or-targz-file/

Lister le contenu d'un tar fichier

$ tar -tvf file.tar

Lister le contenu d'un tar.gz fichier

$ tar -ztvf file.tar.gz

Lister le contenu d'un tar.bz2 fichier

$ tar -jtvf file.tar.bz2

1voto

stderr Points 10006

Vous pouvez utiliser :

wget -qO- https://git-core.googlecode.com/files/git-1.8.0.tar.gz | tar -xvz

Le fichier sera téléchargé, décompressé, et l'écran affichera les fichiers.

Mais si vous voulez faire un fichier Demande a et ne le sauve pas utiliser :

wget -q -O- https://git-core.googlecode.com/files/git-1.8.0.tar.gz | tar -xvz

enter image description here

0voto

Ram Points 1010

Alternativement, si vous pouvez exécuter le code Shell sur l'hôte distant :

ssh remotehost "tar -tzvf mytarball.tar.gz

0voto

kolorafa Points 1

Pour rediriger la sortie des données http du fichier vers stdout vous devez utiliser -O l'interrupteur, alors vous pouvez le saisir

wget -q https://git-core.googlecode.com/files/git-1.8.0.tar.gz -O - | tar -tzv

Mais pourquoi faire cela ? Tar n'a pas de liste de fichiers, donc comme cela vous téléchargez le fichier complet pour obtenir la liste des fichiers, et une fois de plus vous devrez télécharger le fichier complet pour obtenir les fichiers désirés. Donc si vous prévoyez de récupérer certains fichiers à partir de ce fichier tar.gz Le mieux est de l'enregistrer et de le supprimer ensuite.

La seule bonne chose à ce sujet est d'obtenir une liste de fichiers pour certains indexation . Pour la liste des fichiers distants ZIP sont bien meilleurs mais vous ne pouvez toujours pas les télécharger avec wget.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X