web-dev-qa-db-fra.com

`curl -O` stocke un fichier vide bien que` wget` fonctionne bien

J'ai essayé de télécharger un fichier de https://logz.io/sample-data.

curl -O https://logz.io/sample-data

Cependant, il ne fait que renvoyer un fichier vide nommé sample-data.

Contrairement à curl, cependant, wget fonctionne bien en renvoyant un fichier contenant le contenu approprié.

wget https://logz.io/sample-data 

Qu'est-ce que j'ai manqué avec curl?

2
user3523935

Vous avez oublié de suivre les redirections avec curl car le point de terminaison de l'URL est redirigé (301) vers un autre point de terminaison (https://s3.amazonaws.com/logzio-elk/Apache-daily-access.log); envoi d'une requête avec la méthode HEAD (-I) à l'URL spécifiée:

% curl -LI https://logz.io/sample-data
HTTP/1.1 301 Moved Permanently
...
...
Location: https://s3.amazonaws.com/logzio-elk/Apache-daily-access.log
...

HTTP/1.1 200 OK
...
...
Server: AmazonS3

Comme curl ne suit pas les redirections HTTP par défaut, vous devez indiquer à curl de le faire à l'aide de l'option -L/--location:

curl -LO https://logz.io/sample-data

Comme wget suit les redirections par défaut, vous accédez à l'URL éventuelle avec wgettel quel.

3
heemayl