Skip to content

Wget

GNU Wget is a free utility for non-interactive download of files from the Web. It supports HTTP, HTTPS, and FTP protocols, as well as retrieval through HTTP proxies.

How to use

$ wget [OPTION]... [URL]...

Commandline options

Startup

  • -V, --version: 버전 정보.
  • -h, --help: 도움말 열람.
  • -b, --background: 시작한 후 백그라운드에서 작동합니다.
  • -e, --execute=COMMAND: wgetrc 스타일 명령을 실행.

Logging and input file

  • -o, --output-file=FILE: 메시지를 파일로 남긴다.
  • -a, --append-output=FILE: 메시지를 파일에 추가한다.
  • -d, --debug: 디버그 내용 출력.
  • -q, --quiet: 출력없 종료.
  • -v, --verbose: 상세 메시지 출력. (기본옵션)
  • -nv, --non-verbose: 상세 메시지를 출력하지 않는다.
  • -i, --input-file=FILE: 다운받을 URL주소를 파일에서 찾습는다.
  • -F, --force-html: HTML 과 같은 파일을 입력값으로 취급한다.
  • -B, --base=URL, --sslcertfile=FILE, --sslcertkey=KEYFILE: 파일이나 링크에 관련한 URL, keyfile 을 사용하여 ssl을 증명한다.

Download

  • --bind-address=ADDRESS: 로컬 호스트의 주소를 설정한다.
  • -t, --tries=NUMBER: 설정한 숫자 만큼 다시 시도한다. 0은 무한대이다.
  • -O, --output-document=FILE: 문서를 파일로 쓴다.
  • -nc, --no-clobber: 동일한 파일이름은 복사하지 않는다.
    • 파일이 동일한 디렉토리에 두 번 이상 다운로드되는 경우 Wget의 동작은 -nc를 포함한 몇 가지 옵션에 따라 달라집니다.
    • 경우에 따라 반복 다운로드시 로컬 파일이 손상되거나 덮어 쓰여집니다. 다른 경우에는 보존됩니다.
  • -c, --continue: 부분적으로 파일을 이어 받을 수 있게 한다.
  • --dot-style=STYLE: 복구 스타일로 설정한다.
  • -N, --timestamping: 로컬에 있는 것보다 새롭지 않으면 파일을 다시 받지 않는다.
  • -S, --server-response: 서버의 응답을 출력한다.
  • --spider: 다운로드를 하지 않는다.
  • -T, --timeout=SECONDS: 종료될 시간을 초단위로 설정한다.
  • -w, --wait=SECONDS, --waitretry=SECONDS: 검색하고 기다리는 시간을 초단위로 설정한다.
  • --random-wait: wait from 0.5WAIT...1.5WAIT secs between retrievals
  • -Y, --proxy=on/off: 프락시 모드를 켜고 끈다.
  • -Q, --quota=NUMBER: 숫자 만큼 분담하도록 셋팅한다.

Directories

  • -nd, --no-directories: 디렉토리를 생성하지 않는다.
  • -x, --force-directories: 디렉토리를 강제로 생성한다.
  • -nH, --no-host-directories: 호스트 이름의 디렉토리를 생성하지 않는다.
  • -P, --directory-prefix=PREFIX: 지정한 곳에 파일을 저장한다.
  • --cut-dirs=NUMBER: 디렉토리 구성요소를 숫자많큼 지우고 무시한다.

Http options

  • --http-user=USER: http 유저의 아이디를 설정한다.
  • --http-passwd=PASS: http의 패스워드의 암호를 설정한다.
  • -C, --cache=on/off: 서버측의 캐쉬 데이터를 허용하는게 보통이나, 제거 할수도 있다.
  • -E, --html-extension: 모든 text/html형식의 문서들과 .html 파일을 같이 확장해서 저장한다.
  • --ignore-length: Content-Length라는 헤더의 부분은 무시한다.
  • --header=STRING: 헤더들간의 사이의 글씨를 추가한다.
  • --proxy-user=USER: 프락시의 유저이름을 설정한다.
  • --proxy-passwd=PASS: 프락시 패스워드를 설정한다.
  • --referer=URL: http가 요청하는 헤더에서 URL참조한 것을 추가한다.
  • -s, --save-headers: 파일에서 HTTP 헤더를 저장한다.
  • -U, --user-agent=AGENT: Wget/Version 보다 나은 에이전트를 조사한다.
  • --no-http-keep-alive: HTTP 의 Keep-alive 제거 (끈질기게 연결해준다.)
  • --cookies=off: 쿠키사용 안함.
  • --load-cookies=FILE: 쿠키를 세션전의 파일에서 불러온다.
  • --save-cookies=FILE: 세션이후의 파일에서 쿠키를 저장한다.

Ftp options

  • -nr, --dont-remove-listing: .listing이라는 파일에 있는건 지우지 않는다.
  • -g, --glob=on/off: 하나의 파일 이름으로 하는지를 켜고 끈다.
  • --passive-ftp: 반응하지 않는 전송모드를 사용한다.
  • --retr-symlinks: 복구중에 링크가 걸린 파일을 가져온다 (디렉토리는 아니다).

Recursive retrieval

  • -r, --recursive: 웹을 빨아들이는 것을 반복한다. 조심해서 사용하라!
  • -l, --level=NUMBER: 최대한 반복한다. 정도는 0 또는 inf 으로하면 헤아릴수 없이 반복한다.
  • --delete-after: 그것들을 다 받으면 로컬의 파일들을 삭제 한다.
  • -k, --convert-links: 관계 없는 링크에서 관계있는 것으로 변환해준다.
  • -K, --backup-converted: 변환하기 전에 X라는 파일을 X.orig 라는 파일로 백업해준다.
  • -m, --mirror: 미러링에 적합한 옵션을 켠다.
    • 이 옵션은 재귀(-r) 및 타임 스탬프를 켜고(-N) 무한 재귀 깊이(-l inf)를 설정하며 FTP 디렉토리 목록을 유지(--no-remove-listing)합니다.
    • -r -N -l inf --no-remove-listing 옵션과 동일하다.
  • -p, --page-requisites: 모든 이미지와 기타 HTML 페이지가 표현 가능한 모든것을 가져온다.

Recursive accept/reject

  • -A, --accept=LIST: 받아들일 것을 확장하기 위해 콤마로 분리된 리스트로 받아들인다.
  • -R, --reject=LIST: 거절할 것을 확장하기 위해 콤마로 분리된 리스트로 받아들인다.
  • -D, --domains=LIST: 받아들일 도메인을 콤마로 분리된 리스트로 받아들인다.
  • --exclude-domains=LIST: 거절할 도메인을 콤마로 분리된 리스트로 받아들인다.
  • --follow-ftp: HTML 문서에서의 FTP 링크를 따라간다.
  • --follow-tags=LIST: HTML 태그에서 따라갈 콤마로 분리된 리스트로 받아들인다.
  • -G, --ignore-tags=LIST: 무시할 HTML 태그를 콤마로 분리된 리스트로 받아들인다.
  • -H, --span-hosts: 반복할때에 다른 호스트로도 가게 한다.
  • -L, --relative: 관계있는 링크만 따라간다.
  • -I, --include-directories=LIST: 허용할 디렉토리를 리스트로 받아들인다.
  • -X, --exclude-directories=LIST: 차단할 디렉토리를 리스트로 받아들인다.
  • -nh, --no-host-lookup: DNS의 검색 호스트를 사용하지 않는다.
  • -np, --no-parent: 상위 디렉토리를 올라가지 않도록 한다.

Example

  • Wget:DownloadImage: 한 페이지 안의 전체 이미지를 다운로드 받는 배치파일 샘플.

FTP Download

FTP 주소를 통하여 특정파일 다운로드 방법은 아래와 같다.

$ wget --ftp-user=[ID] --ftp-password=[PASSWORD] -r [URL] -O [OUTPUT]

Downloading just one page

Downloading just one page (and all the images, fonts, JS, CSS)

$ wget -E -H -k -K -p http://<site>/<document>

사이트 전체 다운로드 방법

특정사이트 전체를 다운받을 수 있는 방법은 아래와 같다.

$ wget -U -nc -np -r -k -l 0 [URL]
HTTP Error 403 – Forbidden.
만약 403 에러가 나타날 경우 -U 옵션(user agent)을 추가하면 된다.
외부 호스트 제한.
-L 옵션(leLative)을 사용하면 상대주소를 이용한 링크만 불러온다.
반대로 -H 옵션(span-hosts)을 사용하면 다른호스트를 재귀적으로 탐색한다.
하위 디렉터리 다운로드.
-r 옵션을 사용하면 하위 디렉토리의 파일을 전부 다운받는다.
상대링크 변경.
-k 옵션을 사용하면 절대링크에서 상대링크로 변경해준다.
동일파일 복사방지.
-nc 옵션(not-clobber)을 사용하면 동일한 파일이름은 복사하지 않는다.
상위 디렉터리 탐색 방지.
-np 옵션(no-parent)을 사용하면 상위폴더는 탐색하지 않는다.
디렉터리 진입 횟수 제한.
-l [DEPTH] 옵션은 하위 디렉터리 진입 횟수(DEPTH)를 제한한다.
[DEPTH]가 0일 경우 하위 디렉토리의 모든 파일을 링크의 끝까지 쫓아가서 받는다.
이미지 가져오기.
-p 옵션을 사용하면 모든 이미지와 기타 HTML 페이지가 표현 가능한 모든것을 가져온다.

사이트 전체 다운로드 방법 (HTTPS)

보안확인을 하지 않고 다운로드 받는 방법은 아래와 같다.

$ wget --no-check-certificate -c -m -U -nc -np -r -k -l 0 [URL]

웹 크롤링

크롤링 (Crawling)을 위한 명령어는 아래와 같다.

$ wget -U -H -r -nc -p -l 0 [URL]

Ignore robots.txt

$ wget -e robots=off [URL]

Random wait

$ wget --wait=1 --random-wait [URL]

Disable HTTP redirect

$ wget --max-redirect=0 [URL]

Healthcheck

Dockerfile에서 curl 대용으로 사용해야 할 경우:

HEALTHCHECK  --interval=5m --timeout=3s \
  CMD wget --no-verbose --tries=1 --spider http://localhost/ || exit 1
  • --no-verbose - Turn off verbose without being completely quiet (use -q for that), which means that error messages and basic information still get printed.
  • --tries=1 - If not set, some wget implementations will retry indefinitely when HTTP 200 response is not returned.
  • --spider - Behave as a Web spider, which means that it will not download the pages, just check that they are there.
    • exit 1 - Ensures exit code 1 on failure. Heathcheck only expects the following:
      • 0: success - the container is healthy and ready for use
      • 1: unhealthy - the container is not working correctly
      • 2: reserved - do not use this exit code

참고로 curl 버전은:

HEALTHCHECK --interval=5m --timeout=3s \
  CMD curl -f http://localhost/ || exit 1 

See also

Favorite site

References


  1. Gnu-software-wget.zip