Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

wget

GNU wget, 줄요서 wget 혹은 Geturl로 부른다. GNU Project에서 개발 중인 소프트웨어로 웹서버로 부터 컨텐츠를 긁어오는 일을 하는 프로그램이다. HTTP, HTTPS, FTP 프로토콜을 지원한다.

Recursive하게 문서를 긁어와서 로컬 디스크에 저장할 수 있는데, 문서에 포함된 링크를 로컬링크로 변환해준다. 또한 proxies를 지원한다.

인터넷 붐이 일기시작한 1996년에 개발됐으며, 지금은 거의 모든 리눅스 배포판에 기본으로 들어가 있다. C로 작성됐으며, 유닉스 시스템을 비롯한 MS 윈도우즈, MAC OS, Open VMS, AmigaOS 등 다양한 운영체제에서 사용할 수 있다.

GWget(Gnome)과 같은 GUI 프론트 프로그램도 있다.

이식성

이식성 높은 C언어로 만들어졌으며, 3rd party 라이브러리의 사용을 최소화 한 관계로 거의 모든 유닉스에서 즉시 컴파일 해서 사용할 수 있다.

Non-interactiveness

Wget은 CLI 프로그램으로 유저와의 상호작용 없이 사용할 수 있다. 유저는 화면없이 배치작업으로 프로그램을 실행 할 수 있으며, 실행 내용을 파일로 저장할 수도 있다. Shell 과 함께 자동화된 소프트웨어를 개발할 수 있다.

Recurisive download

웹 크롤러 처럼 HTML의 링크를 읽어서 컨텐츠를 다운로드 하는게 가능하다. 사이트의 모든 페이지를 다운로드 하거나, 일정 깊이만큼만 다운로드 할 수도 있다. 로컬에 컨텐츠를 저장하는 용도로 사용하거나 웹 사이트를 미러링하는 용도로의 사용이 가능하다.

HTTP와 FTP의 내용을 간단히 미러링 할 수 있지만, rsync 처럼 새로 업데이트된 파일만 다운로드하거나 하는 등의 세부적인 조작은 불가능 하다.

기타 기능들

  • Proxy를 이용한 다운로드를 지원한다. 방화벽 내부에서 바깥에 있는 컨텐츠를 다운로드 하기 위한 용도로 사용할 수 있다.
  • Persistent HTTP 연결을 지원한다. 다른 말로 HTTP 1.1의 keep-alive를 지원한다는 이야기다.
  • IPv6를 지원한다.
  • OpenSSL 라이브러리를 이용 SSL/TLS로 암호화된 컨텐츠를 다운로드할 수 있다.
  • 32bit 시스템에서 2GB 이상의 파일을 지원한다.
  • 네트워크 bandwidth를 소비하지 않도록 다운로드 스피드를 조절 할 수 있다.

기본 사용

www.example.com의 index페이지(보통 index.html, index.php)를 다운로드 하라.
# wget http://www.example.com/

ftp 파일 다운로드.
# wget ftp://ftp.gnu.org/pub/gnu/wget/wbet-latest.tar.gz

www.example.com의 모든 컨텐츠를 다운로드함
# wget -r -l 0 http://www.example.com/

멀티파일 다운로드

다운로드할 URL이 설정된 파일을 읽어서 처리 할 수 있다.
cat listurls.txt 
https://www.joinc.co.kr/w/FrontPage
https://www.joinc.co.kr/w/man/1/at
https://www.joinc.co.kr/w/man/12/Kafka/QuickStart

-i file으로 읽을 파일을 설정할 수 있다.
# wget -i listurls.txt 
--2019-06-10 13:54:04--  https://www.joinc.co.kr/w/FrontPage
Resolving www.joinc.co.kr (www.joinc.co.kr)... 1.234.27.228
접속 www.joinc.co.kr (www.joinc.co.kr)|1.234.27.228|:443... 접속됨.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘FrontPage’

FrontPage               [ <=>                ]  24.54K  --.-KB/s    in 0s      

2019-06-10 13:54:04 (317 MB/s) - ‘FrontPage’ saved [25125]

--2019-06-10 13:54:04--  https://www.joinc.co.kr/w/man/1/at
Reusing existing connection to www.joinc.co.kr:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘at’

at                      [ <=>                ]  18.54K  --.-KB/s    in 0s      

2019-06-10 13:54:04 (322 MB/s) - ‘at’ saved [18986]

--2019-06-10 13:54:04--  https://www.joinc.co.kr/w/man/12/Kafka/QuickStart
Reusing existing connection to www.joinc.co.kr:443.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘QuickStart’

QuickStart              [ <=>                ]  31.76K  --.-KB/s    in 0s      

2019-06-10 13:54:04 (132 MB/s) - ‘QuickStart’ saved [32524]

FINISHED --2019-06-10 13:54:04--
Total wall clock time: 0.2s
Downloaded: 3 files, 75K in 0s (199 MB/s)

다른 파일 이름으로 저장하기

# wget -O FrontPage.html https://www.joinc.co.kr/w/FrontPage
--2019-06-10 13:55:13--  https://www.joinc.co.kr/w/FrontPage
Resolving www.joinc.co.kr (www.joinc.co.kr)... 1.234.27.228
접속 www.joinc.co.kr (www.joinc.co.kr)|1.234.27.228|:443... 접속됨.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘FrontPage.html’

FrontPage.html          [ <=>                ]  24.54K  --.-KB/s    in 0s      

2019-06-10 13:55:13 (264 MB/s) - ‘FrontPage.html’ saved [25125]

다운로드 디렉토리 설정

# wget -P document/html/ -O FrontPage.html https://www.joinc.co.kr/w/FrontPage
document/html/ 디렉토리 밑에 파일이 저장된다. 디렉토리가 없을 경우 (에러없이)현재 디렉토리에 만들어진다.

다운로드 속도 설정

--limit-rate 옵션으로 다운로드 속도를 제한 할 수 있다. 제한된 대역폭을 제공하는 환경에서 대량의 파일을 다운로드 할 때 유용하다. 초당 50k 속도로 제한한 예제다.
$ wget --limit-rate=50k http://mirror.kakao.com/ubuntu-releases/18.10/ubuntu-18.10-desktop-amd64.iso
--2019-06-10 23:52:56--  http://mirror.kakao.com/ubuntu-releases/18.10/ubuntu-18.10-desktop-amd64.iso
Resolving mirror.kakao.com (mirror.kakao.com)... 113.29.189.165
접속 mirror.kakao.com (mirror.kakao.com)|113.29.189.165|:80... 접속됨.
HTTP request sent, awaiting response... 200 OK
Length: 1999503360 (1.9G) [application/octet-stream]
Saving to: ‘ubuntu-18.10-desktop-amd64.iso’

ubuntu-18.10-desktop-amd64   0%[                                         ] 443.31K  50.0KB/s    eta 10h 50m

재전송 설정

인터넷 환경이 좋지 않아서 다운로드가 불안정할 경우 -tries 옵션을 이용해서 재전송을 시도 할 수 있다.
# wget -tries=100 https://wordpress.org/latest.zip

이어받기

-c 옵션을 이용해서 끊긴 지점부터 이어받기 할 수 있다.
$ wget -c http://mirror.kakao.com/ubuntu-releases/18.10/ubuntu-18.10-desktop-amd64.iso