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
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
를 포함한 몇 가지 옵션에 따라 달라집니다. - 경우에 따라 반복 다운로드시 로컬 파일이 손상되거나 덮어 쓰여집니다. 다른 경우에는 보존됩니다.
- 파일이 동일한 디렉토리에 두 번 이상 다운로드되는 경우 Wget의 동작은
-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 주소를 통하여 특정파일 다운로드 방법은 아래와 같다.
Downloading just one page
Downloading just one page (and all the images, fonts, JS, CSS)
사이트 전체 다운로드 방법
특정사이트 전체를 다운받을 수 있는 방법은 아래와 같다.
- 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)
보안확인을 하지 않고 다운로드 받는 방법은 아래와 같다.
웹 크롤링
크롤링 (Crawling)을 위한 명령어는 아래와 같다.
Ignore robots.txt
Random wait
Disable HTTP redirect
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
- exit 1 - Ensures exit code 1 on failure. Heathcheck only expects the following:
참고로 curl 버전은:
See also
- cURL
- Web archiving
- aria2 - 빠른 멀티-프로토콜, 멀티-다운로드 명령행.
Favorite site
- Wikipedia (en) wget에 대한 설명
- GNU wget manual 1
- Linux and Unix wget command
- Wget 2탄 : 이거 이래도 되는건미??? (
--user-agent
,--referer
에 대한 설명) - wget mirror a tumblr site
- Wget All Recent Images From a Tumblr
- Github: A bash script to download all the images from a tumblr or set of tumblrs
- Downloading stuff off of tumblr
- wget으로 웹 사이트 백업하기
- wget: problem with URL containg query string: SOLVED
- wget - I can't download files with "?"
References
-
Gnu-software-wget.zip ↩