it-swarm-eu.dev

Během stahování snižte rychlost stahování wget nebo curl

Je možné omezit (omezit) rychlost stahování wget nebo curl?

Je možné během stahování stahovat plyn?

101
Gautam

Ano, podpora wget i curl omezuje rychlost stahování. Obě možnosti jsou přímo zmíněny v manuálové stránce.

curl

   --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.

E.g: 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.

E.g: wget --limit-rate=423k

139
Ulrich Dangel

O 2 roky později hodím tento úhoz, zatímco wget a curl nejsou interaktivní, alespoň wget (a možná curl, ale nevím pro jistotu) má -c přepínač (což znamená pokračovat od místa, kde jsem přestal stahovat dříve). Takže pokud potřebujete změnit rychlost uprostřed stahování a pravděpodobně jste použili -c přepněte pomocí --limit-rate=x pak můžete zastavit wget a restartovat s jinou rychlostí a to se změní.

4
user82611

Je možné omezit rychlost přenosu pomocí nástrojů tc a netem, ale to omezí rychlost síťového rozhraní počítače. Předpokládám, že používáte pouze wget nebo curl a žádná jiná aplikace si nevyměňuje přenos přes síťové rozhraní.

tc používá Token Bucket Filter (TBF) k řízení rychlosti.

Příklad TBF by byl následující (odkaz http://www.lartc.org/manpages/tc-tbf.html ):

Pro připojení TBF s trvalou maximální rychlostí 0,5mbit/s, peakrate 1,0mbit/s, 5kilobajtový buffer, s vypočteným limitem velikosti fronty před kbelíkem, aby TBF způsobil nejvýše 70ms latence, s dokonalým chováním peakrate , problém:

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

Další příklad usign tc a netem by byl následující (nalezený v http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):

V disciplíně netem není vestavěna žádná kontrola rychlosti, místo toho použijte jednu z dalších disciplín, která tuto kontrolu rychlosti provádí. V tomto příkladu používáme filtr tokenů (TBF) k omezení výstupu.

Chcete-li přidat zpoždění každého paketu procházející/přicházejícího přes rozhraní eth0

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

přidat rychlost přenosu v tbf, velikost vyrovnávací paměti paketů a maximální limit shluku

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

Chcete-li zobrazit seznam pravidel přiřazených v tc pro rozhraní eth0

 # tc -s qdisc ls dev eth0

Výstup výše uvedeného příkazu bude následující

 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 )

Zkontrolujte možnosti vyrovnávací paměti a limitu, protože možná budete potřebovat větší výchozí hodnoty než tyto (jsou v bajtech)

2
Abdul