Limitez la vitesse de téléchargement de wget ou curl lors du téléchargement

97

Est-il possible de limiter (limiter) la vitesse de téléchargement de wgetou curl?

Est-il possible de changer la valeur de régulation pendant le téléchargement?

Gautam
la source
3
Non, il n'est pas possible de changer la vitesse pendant le téléchargement. Consultez les gestionnaires de téléchargement gui comme fatrat ou multiget
Ulrich Dangel
3
Vous pouvez toutefois suspendre le processus via SIGSTOPou ctrl + z et le reprendre plus tard avec SIGCONTou fg. Cela devrait suspendre le processus de téléchargement.
Ulrich Dangel
Je me demande s’il existe un moyen générique de limiter tout programme en cours, c’est-à-dire en définissant une variable d’environnement.
Ehtesh Choudhury
@ ulrich-dangel --limit-rate = montant
Chrips

Réponses:

131

Oui, wget et curl prennent en charge la limitation de votre taux de téléchargement. Les deux options sont directement mentionnées dans la page de manuel.

boucle

   --limit-rate <speed>
          Specify the maximum transfer rate you want curl to use. 
           This feature is useful  if you  have a limited pipe and 
           you'd like your transfer not to use your entire bandwidth.

          The given speed is measured in bytes/second, unless a suffix 
          is appended.  Appending  'k'  or 'K' will count the number
          as kilobytes, 'm' or M' makes it megabytes, while 'g' or 'G' 
          makes it gigabytes. Examples: 200K, 3m and 1G.

Par exemple: curl --limit-rate 423K

wget

   --limit-rate=amount
       Limit the download speed to amount bytes per second.  Amount may
       be expressed in bytes, kilobytes with the k suffix, or 
       megabytes with the m suffix.  For example, --limit-rate=20k will limit 
       the retrieval rate to 20KB/s.  This is useful when, for
       whatever reason, you don't want Wget to consume 
       the entire available bandwidth.

Par exemple: wget --limit-rate=423k

Ulrich Dangel
la source
2
Est-il possible de le changer dynamiquement pendant le téléchargement?
Gautam
2
@GautamK Non, pas wgetplus que curlles programmes interactifs.
Ulrich Dangel
12
@GautamK Pour un gros fichier, si le serveur accepte, vous pouvez tuer le wgetou curlprocessus et reprendre avec wget -cou curl -C. Si vous avez vraiment besoin de reconfigurer un processus en cours, utilisez filet avec un démon - mais la configuration est un peu compliquée. Sinon, examinez la formation du trafic - là encore, la configuration est compliquée.
Gilles
4

2 ans plus tard, je vais lancer cette friandise, alors que wgetet curlne sont pas interactifs, du moins wget(et peut-être curlmais je ne sais pas avec certitude) a le -ccommutateur (qui signifie continuer de là où j'ai arrêté le téléchargement plus tôt). Donc, si vous devez modifier votre vitesse au milieu d'un téléchargement et que vous avez probablement utilisé le -ccommutateur, --limit-rate=xvous pouvez alors l'arrêter wgetet le redémarrer à une vitesse différente, ce qui changerait.

utilisateur82611
la source
2

Il est possible de limiter le débit de trafic à l'aide des outils tcet netem, mais cela limitera le débit de l'interface réseau de l'ordinateur. Je suppose que vous utilisez uniquement wgetou curlqu'aucune autre application n'échange de trafic via l'interface réseau.

tc utilise un filtre à jetons jeton (TBF) pour contrôler le débit.

Voici un exemple de TBF (réf. Http://www.lartc.org/manpages/tc-tbf.html ):

Pour attacher un TBF avec un débit maximum soutenu de 0,5 Mbits / s, un débit maximum de 1,0 Mbits / s, une mémoire tampon de 5 kilo-octets, avec une limite de taille de la file d'attente avant compartiment définie pour que le TBF provoque un maximum de latence de 70 ms, avec un comportement de débit optimal , problème:

# tc qdisc add dev eth0 root tbf rate 0.5mbit \ burst 5kb latency 70ms peakrate 1mbit \ minburst 1540

Voici un autre exemple d'utilisation de tc et de netem (disponible à l' adresse http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):

Il n'y a pas de contrôle de taux intégré à la discipline netem, utilisez plutôt l'une des autres disciplines qui contrôle le taux. Dans cet exemple, nous utilisons un filtre à jeton de jeton (TBF) pour limiter la sortie.

Ajouter le délai de chaque paquet allant / venant à travers l'interface eth0

 # tc qdisc add dev eth0 root handle 1:0 netem delay 100ms

ajouter le débit binaire, la taille de la mémoire tampon du paquet et la limite de rafale maximale

 # tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000

Pour voir la liste des règles assignées dans tc pour l'interface eth0

 # tc -s qdisc ls dev eth0

La sortie de la commande ci-dessus serait comme ci-dessous

 qdisc netem 1: limit 1000 delay 100.0ms
  Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
 qdisc tbf 10: rate 256Kbit burst 1599b lat 26.6ms
  Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )

Vérifiez les options pour les tampons et les limites car vous constaterez peut-être que vous avez besoin de valeurs par défaut plus grandes que celles-ci (elles sont en octets).

Abdul
la source