web-dev-qa-db-fra.com

Comment renommer le fichier téléchargé avec wget?

Pour télécharger les statistiques SOFA à partir du serveur, j'utilise la commande wget:

wget -c http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

Dans ce cas, le nom du fichier téléchargé est download?source=files. Si j'ajoute le --output-document option à la commande, renommer le fichier de sortie en sofastatistics-latest.deb, le format du fichier téléchargé n’est pas reconnu par le paquet dpkg.

dpkg-deb: error: `sofastatistics-latest.deb' is not a debian format archive

Comment renommer correctement le fichier téléchargé avec wget?

PDATE - Jan 08 '15

Avec le lien fourni, le fichier téléchargé sera toujours un fichier * .tar.gz. Pour l'obtenir avec le vrai nom, ajoutez simplement le --content-disposition Option comme ceci (merci à @ 6EQUJ5!):

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

Mais il me fallait un fichier * .deb, donc voici le @creaktive, je devais rechercher un lien vers un fichier * .deb.

Merci à tous pour les réponses!

70
Iurie Malai

Une redirection de la sortie standard dans un nom de fichier arbitraire fonctionne toujours. Vous le faites correctement comme man wget dit, en utilisant -O

wget http://www.kernel.org/pub/linux/kernel/README -O foo
--2013-01-13 18:59:44--  http://www.kernel.org/pub/linux/kernel/README
Resolving www.kernel.org... 149.20.4.69, 149.20.20.133
Connecting to www.kernel.org|149.20.4.69|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12056 (12K) [text/plain]
Saving to: `foo'

100%[======================================================================================================================================>] 12,056      --.-K/s   in 0.003s  

2013-01-13 18:59:45 (4.39 MB/s) - `foo' saved [12056/12056]

En effet, vous devez obtenir un code HTML dans votre fichier (peut généralement être vérifié avec fichier man).

[EDIT]

Dans votre cas, le client reçoit 302 trouvé (vous pouvez le vérifier avec curl -v URL).

La boucle suivante fait l'affaire en respectant le 3xx:

$ curl -L http://sourceforge.net/projects/sofastatistics/files/latest/download?source=files -o foo.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0   463    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:02 --:--:--     0
100 2035k  100 2035k    0     0   390k      0  0:00:05  0:00:05 --:--:-- 1541k
$ file foo.deb 
foo.deb: gzip compressed data, was "sofastats-1.3.1.tar", last modified: Thu Jan 10 00:30:44 2013, max compression

Il devrait exister une option similaire pour que wget tolère les redirections HTTP.

97
Yauhen Yakimovich

Si vous deviez effectuer le même téléchargement à partir d’un navigateur Web et que vous remarquiez que le navigateur attribue un nom correct au fichier, vous pouvez utiliser le fichier --content-disposition option pour donner le même comportement à wget:

wget --content-disposition http://sourceforge.net/projects/sofastatistics/files/latest/download?source=dlp

Ma page de manuel Debian rapporte ceci comme une fonctionnalité 'expérimentale' mais je ne me souviens pas que cela ne fonctionne pas pour moi:

       --content-disposition
           If this is set to on, experimental (not fully-functional) support for "Content-Disposition" headers is enabled. This can currently result in extra round-trips to the server
           for a "HEAD" request, and is known to suffer from a few bugs, which is why it is not currently enabled by default.

           This option is useful for some file-downloading CGI programs that use "Content-Disposition" headers to describe what the name of a downloaded file should be.
20
6EQUJ5

Ce lien pointe vers un redirecteur, pas vers la destination finale! Vous téléchargez donc HTML et vous le renommez en .deb. La page encombrée a ceci en haut:

Votre téléchargement va commencer dans 0 secondes ... Des problèmes avec le téléchargement? Veuillez utiliser ceci lien direct , ou essayer un autre miroir .

Maintenant, this est un lien valide (notez le préfixe download): http://downloads.sourceforge.net /project/sofastatistics/sofastatistics/1.3.1/sofastats-1.3.1-1_all.deb?r=http%3A%2F%2F%2F%2Fsourceforge.net%2Fproject%2Fsofastatistics%2Ffiles%2Fsofastatistics%2F1.3.1.1.

Transmettez cette URL à wget. Notez également que SourceForge tente de vous déjouer en invitant le système opérationnel via la chaîne User-Agent. La meilleure hypothèse pour "wget" semble être le paquet .tar.gz. Donc, vous devriez être plus précis, demander le fichier deb!

1
creaktive