1 votes

Comment obtenir la taille totale du téléchargement d'une liste ?

Imaginez ça, j'ai download-list.txt . Il contient des urls de fichiers :

http://example.com/a.txt
http://example.com/b.txt
http://example.com/c.txt
http://example.com/d.txt
http://example.com/e.txt

Quand je cours wget -i download-list.txt --spider il montre comme :

http://example.com/a.txt
...
Length: 128 (128B) [text/txt]
...
http://example.com/b.txt
...
Length: 120 (120B) [text/txt]
...
http://example.com/c.txt
...
Length: 100 (100B) [text/txt]
...
http://example.com/d.txt
...
Length: 90 (90B) [text/txt]
...
http://example.com/e.txt
...
Length: 80 (80B) [text/txt]
...

Mais, je n'ai pas besoin de la taille des fichiers individuels, j'ai besoin de la taille totale des fichiers :

518 (128+120+100+90+80)

Comment obtenir ce résultat ? (Toute autre méthode sans wget est également appréciée)

5voto

αғsнιη Points 33236

Je suggère d'utiliser curl :

<download-list.txt xargs -n1 curl -sI |
  awk '/[cC]ontent-[lL]ength/{total_size+=$2} END{ print total_size " bytes" }'

El curl imprimera les informations d'en-tête ( quel fichier ? ) comme ci-dessous qui contient "Content-Length" en octets (si le serveur distant peut le fournir) ; puis avec awk nous additionnons la deuxième colonne qui est la taille du fichier pour la ligne si elle correspond avec Content-Length et à la FIN, imprimer la taille totale sauvegardée en total_size variable.

HTTP/1.1 200 OK
**Content-Length: 1921843200**
Content-Type: application/x-iso9660-image
ETag: "728d0000-56ac4c63786e2"
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Thu, 26 Apr 2018 18:44:15 GMT
Connection: keep-alive
Date: Wed, 23 May 2018 16:45:08 GMT

de man curl

-I, -tête
(HTTP/FTP/FILE) Récupérer uniquement l'en-tête HTTP ! Les serveurs HTTP disposent de la commande HEAD que cette commande utilise pour ne rien récupérer. que l'en-tête l'en-tête d'un document. Lorsqu'elle est utilisée sur un fichier FTP ou FILE, curl affiche uniquement la taille du fichier et l'heure de la dernière modification.

-s, --silencieux
Mode silencieux ou calme. N'affiche pas le compteur de progression ni les messages d'erreur. Rend Curl muet. Il produira toujours les données que vous demandez demandées, potentiellement même vers le terminal/stdout à moins que vous ne le redirigiez.

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