wget에서 다운로드 한 파일 크기를 어떻게 제한 할 수 있습니까?


13

내가 사용하려는 wget다운로드 이미지 파일 (PHP 스크립트에서)하지만, 특정 크기 이상 파일을 다운로드하고 싶지 않아요.

로 파일 크기를 제한 할 수 있습니까 wget? 그렇지 않은 경우 더 좋은 방법은 무엇입니까?

답변:


14

다운로드를 스크립팅하는 경우 curl대신 사용 을 고려해야 합니다. Wget은 출력을 구문 분석하고 전체 사이트를 재귀 적으로 가져올 수 있지만 curl에는 특정 파일의 실제 다운로드와 관련된 더 많은 옵션이 있습니다. 맨 페이지의 관련 옵션은 다음과 같습니다.

--max-filesize
다운로드 할 파일의 최대 크기 (바이트)를 지정합니다. 요청한 파일이이 값보다 큰 경우 전송이 시작되지 않고 curl이 종료 코드 63으로 반환됩니다.
참고 : 파일 크기는 다운로드 전에 항상 알려지지는 않으며 이러한 파일의 경우 파일이 있어도이 옵션은 적용되지 않습니다 전송이 주어진 한도보다 큽니다.

일부 파일에서만 작동하는 것에 대한 참고 사항은 고려할 가치가 있습니다. 클라이언트는 파일을 다운로드하기 전에 파일의 크기를보고하기 위해 서버에 의존합니다. 대부분의 서버가이를보고하는 것은 아닙니다.


6
curl을 $n바이트 보다 큰 파일을 생성하지 못하도록 시스템 제한과 결합 할 수 있습니다 (ulimit -f $(($n/512)); curl --max-filesize $n …). curl파일 크기가 $n/512512 바이트 블록을 초과하면 오류와 함께 중단됩니다 .
Gilles 'SO- 악마 그만해'

당신은 또한 httrack 수 있습니다.
Vi.

6

wget을 사용하려면 다운로드하지 않고 파일 크기를 테스트하는 방법이 있습니다.

wget --spider $URL 2>&1 | awk '/Length/ {print $2}'

$URL물론 다운로드하려는 파일의 URL은 어디에 있습니까 ?

따라서 출력을 기반으로 스크립트를 조정할 수 있습니다. 같은 :

{ [ $(wget --spider $URL 2>&1 | awk '/Length/ {print $2}') -lt 20971520 ] && wget $URL; } || echo file to big

다운로드 크기를 20MB로 제한합니다.

(코드는 정보 제공 목적으로만보기 싫습니다).


1

wget으로 최대 파일 크기를 설정하는 합리적인 방법이없는 것 같습니다.


2
와 질의 접근 방식 ulimit(참조 bash(1), setrlimit(2))와 의지는 일 wget(1), 그것은 조금 무거운 손으로 비록.
sarnold

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