다운로드 중 wget 또는 curl 다운로드 속도 조절


97

wget또는 의 다운로드 속도를 제한 (제한) 할 수 curl있습니까?

다운로드하는 동안 스로틀 값을 변경할 수 있습니까?


3
다운로드하는 동안 속도를 변경할 수 없습니다. fatrat 또는 multiget와 같은 GUI 다운로드 관리자를 살펴보십시오
Ulrich Dangel

3
그러나 SIGSTOP또는 ctrl + z 를 통해 프로세스를 일시 중단하고 나중에 SIGCONT또는 fg 를 사용하여 프로세스를 다시 시작할 수 있습니다. 다운로드 프로세스가 일시 중지됩니다.
Ulrich Dangel

실행중인 프로그램을 조절하는 일반적인 방법, 즉 환경 변수 설정을 통해 일반적인 방법이 있는지 궁금합니다.
Ehtesh Choudhury

@ ulrich-dangel --limit-rate = amount
Chrips

답변:


131

네, wget과 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.

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

예 : wget --limit-rate=423k


2
다운로드가 진행되는 동안 동적으로 변경할 수 있습니까?
Gautam

2
@GautamK 대화 형 프로그램 도 wget아니고 아닙니다 curl.
Ulrich Dangel

12
@GautamK 하나의 큰 파일의 경우 서버가 파일을 수락하면 wget또는 curl프로세스를 종료하고 wget -c또는로 다시 시작할 수 있습니다 curl -C. 실행중인 프로세스를 다시 구성해야하는 경우 데몬과 함께 물방울 을 사용하십시오. 그러나 설정이 약간 복잡합니다. 또는 복잡한 경우 트래픽 조정을 다시 설정하십시오.
Gilles

4

나중에 2 년 동안 나는이 재미있는 이야기를 슬로우합니다 wgetcurl상호 작용하지 않은 이상, wget(그리고 아마도 curl가지고 있지만 난 확실히 모른다) -c(I 이전에 다운로드 중단 된 부분부터 계속을 의미) 스위치를. 따라서 다운로드 도중에 속도를 변경해야하고 -c스위치를 사용했을 것으로 예상되는 경우 다른 속도로 스위치를 --limit-rate=x중지 wget했다가 다시 시작할 수 있으며 변경 될 수 있습니다.


2

tcnetem도구를 사용하여 트래픽 속도를 제한 할 수 있지만 이것은 컴퓨터의 네트워크 인터페이스 속도를 제한합니다. 나는 당신 이 네트워크 인터페이스를 통해 트래픽을 교환하는 다른 응용 프로그램 을 사용 wget하거나 curl전혀 사용하지 않는다고 가정합니다 .

tc TBF (Token Bucket Filter)를 사용하여 비율을 제어합니다.

TBF의 한 예는 다음과 같습니다 ( http://www.lartc.org/manpages/tc-tbf.html 참조 ).

최대 버킷 속도가 0.5mbit / s, 최고 속도 1.0mbit / s, 5KB 버퍼 인 TBF를 사전 버킷 대기열 크기 제한으로 계산하여 TBF가 최대 피크 동작으로 최대 70ms의 대기 시간을 발생시킵니다. 문제 :

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

usign tc와 netem의 다른 예는 다음과 같습니다 ( http://www.linuxfoundation.org/collaborate/workgroups/networking/netem에 있음 ).

netem 학문에 기본 제공되는 금리 통제는 없으며 대신 금리 통제를 수행하는 다른 학문 중 하나를 사용하십시오. 이 예에서는 TBF (Token Bucket Filter)를 사용하여 출력을 제한합니다.

eth0 인터페이스를 통한 각 패킷의 지연을 추가하려면

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

tbf, 패킷 버퍼 크기 및 최대 버스트 제한으로 데이터 속도를 추가

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

인터페이스 eth0에 대해 tc에 할당 된 규칙 목록을 보려면

 # tc -s qdisc ls dev eth0

위 명령의 출력은 다음과 같습니다.

 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 )

기본값보다 더 큰 기본값이 필요할 수 있으므로 buffer 및 limit 옵션을 확인하십시오 (바이트 단위).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.