답변:
다운로드를 스크립팅하는 경우 curl
대신 사용 을 고려해야 합니다. Wget은 출력을 구문 분석하고 전체 사이트를 재귀 적으로 가져올 수 있지만 curl에는 특정 파일의 실제 다운로드와 관련된 더 많은 옵션이 있습니다. 맨 페이지의 관련 옵션은 다음과 같습니다.
--max-filesize
다운로드 할 파일의 최대 크기 (바이트)를 지정합니다. 요청한 파일이이 값보다 큰 경우 전송이 시작되지 않고 curl이 종료 코드 63으로 반환됩니다.
참고 : 파일 크기는 다운로드 전에 항상 알려지지는 않으며 이러한 파일의 경우 파일이 있어도이 옵션은 적용되지 않습니다 전송이 주어진 한도보다 큽니다.
일부 파일에서만 작동하는 것에 대한 참고 사항은 고려할 가치가 있습니다. 클라이언트는 파일을 다운로드하기 전에 파일의 크기를보고하기 위해 서버에 의존합니다. 대부분의 서버가이를보고하는 것은 아닙니다.
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로 제한합니다.
(코드는 정보 제공 목적으로만보기 싫습니다).
wget에는 -Q
--quota
여러 URL (재귀 또는 입력 목록)이 제공 될 때 최대 다운로드 양을 제한 하는 옵션이 있습니다.
https://www.gnu.org/software/wget/manual/html_node/Download-Options.html
$n
바이트 보다 큰 파일을 생성하지 못하도록 시스템 제한과 결합 할 수 있습니다(ulimit -f $(($n/512)); curl --max-filesize $n …)
.curl
파일 크기가$n/512
512 바이트 블록을 초과하면 오류와 함께 중단됩니다 .