linux command line 에서 HTTP 로 파일 받기 - wget 사용법


wget 은 Web 에서 파일을 다운로드 받을수 있는 커맨드 라인 유틸리티입니다.

curl 과 유사하지만 curl 처럼 다양한 프로토콜과 많은 기능을 지원하지 않고 파일 받는 기능에 특화되어 사용이 쉽고 간단합니다.

파일 받기

다운로드

wget 뒤에 받으려는 파일의 URL 을 적어주면 됩니다.


wget https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz


파일 저장시 서버의 파일명을 사용하며 위 예에서는 "node-v12.19.0-linux-x64.tar.xz" 로 저장됩니다. 이름 변경을 원할 경우 -O, --output-document=FILE 옵션을 주면 저장 파일의 이름을 바꿀수 있습니다.

아래 예제는 nodejs.txz 로 파일을 저장합니다.

wget -O nodejs.txz https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz

SSL/TLS 인증서 미검증

서버의 TLS가 잘못 설정 되었거나 CA 검증에 실패하면 wget 은 에러로 처리하고 파일을 다운로드 받지 않습니다.

--no-check-certificate 옵션을 사용하면 인증서 유효성을 검증하지 않고 진행합니다.

wget --no-check-certificate https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz


사용자 인증

사용자 인증을 요구하는 사이트의 경우 --user 와 --password 옵션으로 인증을 처리할 수 있습니다.

wget --user=username --password=password https://example.com/user-area

페이지의 모든 리소스 다운로드 받기

다운로드 대상이 페이지일 경우 페이지에서 참고하는 모든 리소스(스크립트, 이미지, CSS 등)가 필요할 수 있습니다.

-p, --page-requisites 옵션을 사용하면 필요한 모든 리소스까지 다운로드 받아 줍니다.


--wait=3 옵션은 참고하는 리소스를 다운받을 때 3초의 간격을 두는 옵션입니다.

 wget --page-requisites --convert-links --wait=3 https://example.com/somepage.html



Mirroring

wget 이 curl 과 다른 점중에 하나는 웹 사이트 미러링을 지원하는 점입니다.


하위 페이지 미러링

사이트를 미러하는 --mirror 옵션과 상위 페이지는 제외하는 --no-parent 옵션을 사용하면 웹 사이트를 쉽게 미러링할 수 있습니다.

다음은 example.com 의 target-path 하위의 경로를 미러링합니다.

 wget --mirror --no-parent https://example.com/target-path/


다운로드 속도 제한

mirroring 은 네트워크 대역폭을 많이 사용하게 되므로 같은 네트워크 사용자에게 영향을 주게 됩니다.  또 상대 서버에도 부담을 주므로 속도 상한이나 재시도 횟수등을 지정해야 합니다.

속도 상한은 --limit-rate 로 지정 가능하며 재시도 횟수는 --tries 옵션(0 일 경우 무제한)으로 설정 가능합니다. 


아래는 다운로드 속도 상한은 2M 가로 하고 재시도 횟수를 50으로 하는 예제입니다.

wget --limit-rate=2m --tries=50 https://example.com/somepath/


같이 보기

Ref