wget은 인터넷에서 파일을 내려받을 때 가장 널리 쓰이는 필수 유틸리티입니다. 대용량 파일 다운로드는 물론, 재귀적(하위 페이지 포함) 다운로드, 비대화형 다운로드, 여러 파일 동시 다운로드 등 복잡한 상황도 거의 모두 처리할 수 있습니다.
이 글에서는 다양한 다운로드 시나리오별로 wget을 활용하는 방법을 15가지 예제를 통해 자세히 살펴보겠습니다.
1. wget으로 단일 파일 다운로드하기
가장 기본적인 사용법입니다. 아래 명령은 인터넷에서 파일 하나를 내려받아 현재 디렉터리에 저장합니다.
$ wget https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
다운로드 중에는 진행률과 함께 다음 정보들이 표시됩니다.
- 다운로드 완료율 (예: 31%)
- 지금까지 내려받은 바이트 수 (예: 1,213,592 bytes)
- 현재 다운로드 속도 (예: 68.2K/s)
- 남은 시간 (예: eta 34초)
다운로드 진행 중 화면:
$ wget https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2.1' 31% [=================> 1,213,592 68.2K/s eta 34s
다운로드 완료 화면:
$ wget https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2' 100%[======================>] 3,852,374 76.8K/s in 55s 2009-09-25 11:15:30 (68.7 KB/s) - `strx25-0.9.2.1.tar.bz2' saved [3852374/3852374]
2. wget -O 옵션으로 다른 파일명으로 저장하기
기본적으로 wget은 URL에서 마지막 슬래시(/) 뒤의 문자열을 파일명으로 사용합니다. 하지만 이 이름이 항상 적절한 것은 아닙니다.
잘못된 예: 아래 명령을 실행하면 파일이 'download_script.php?src_id=7701'이라는 이름으로 저장됩니다.
$ wget https://www.vim.org/scripts/download_script.php?src_id=7701
다운받은 파일이 zip 형식임에도 불구하고 아래처럼 이상한 이름으로 저장되어 버립니다.
$ ls download_script.php?src_id=7701
올바른 예: 이 문제를 해결하려면 -O 옵션으로 저장할 파일명을 직접 지정하면 됩니다.
$ wget -O taglist.zip https://www.vim.org/scripts/download_script.php?src_id=7701
3. wget –limit-rate로 다운로드 속도 제한하기
wget은 기본적으로 사용 가능한 최대 대역폭을 모두 점유하려고 합니다. 운영 서버에서 대용량 파일을 받을 때는 다른 서비스에 영향을 줄 수 있으므로, --limit-rate 옵션으로 속도를 제한하는 것이 좋습니다.
아래 예제는 다운로드 속도를 초당 200KB로 제한합니다.
$ wget --limit-rate=200k https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
4. wget -c로 중단된 다운로드 이어받기
중간에 끊긴 다운로드를 처음부터 다시 시작하는 것은 매우 비효율적입니다. -c(continue) 옵션을 사용하면 중단된 지점부터 이어서 받을 수 있습니다.
$ wget -c https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
대용량 파일 다운로드 도중 연결이 끊겼을 때 특히 유용합니다. 전체를 다시 받는 대신, -c 옵션으로 중단된 부분부터 재개하세요.
참고: -c 옵션 없이 다시 다운로드를 시작하면, 같은 이름의 파일이 이미 존재하기 때문에 wget이 자동으로 파일명 뒤에 .1을 붙여 저장합니다. 만약 .1이 붙은 파일도 이미 있다면 .2를 붙여 저장합니다.
5. wget -b로 백그라운드에서 다운로드하기
대용량 파일을 받을 때는 -b 옵션으로 다운로드를 백그라운드로 보내면 터미널을 계속 사용할 수 있습니다.
$ wget -b https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Continuing in background, pid 1984. Output will be written to `wget-log'.
다운로드가 시작된 후 곧바로 셸 프롬프트가 반환되며, 로그는 'wget-log' 파일에 기록됩니다. 아래와 같이 tail -f 명령으로 진행 상황을 실시간으로 확인할 수 있습니다.
$ tail -f wget-log Saving to: `strx25-0.9.2.1.tar.bz2.4' 0K .......... .......... .......... .......... .......... 1% 65.5K 57s 50K .......... .......... .......... .......... .......... 2% 85.9K 49s 100K .......... .......... .......... .......... .......... 3% 83.3K 47s 150K .......... .......... .......... .......... .......... 5% 86.6K 45s 200K .......... .......... .......... .......... .......... 6% 33.9K 56s 250K .......... .......... .......... .......... .......... 7% 182M 46s 300K .......... .......... .......... .......... .......... 9% 57.9K 47s
tail 명령을 더 효과적으로 활용해 여러 로그 파일을 동시에 모니터링하는 방법도 알아두면 좋습니다.
6. wget –user-agent로 브라우저인 것처럼 위장하기
일부 웹사이트는 접속 클라이언트의 User-Agent가 브라우저가 아니면 페이지 다운로드를 차단합니다. 이럴 때 --user-agent 옵션으로 브라우저인 것처럼 위장할 수 있습니다.
$ wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" URL-TO-DOWNLOAD
7. wget –spider로 다운로드 URL 사전 점검하기
예약 작업(scheduled download)으로 파일을 받기 전에, 해당 시점에 다운로드가 정상적으로 가능한지 미리 확인해야 합니다. 예약 스크립트의 명령줄을 그대로 복사한 뒤 --spider 옵션만 추가하면 실제 다운로드 없이 URL을 점검할 수 있습니다.
$ wget --spider DOWNLOAD-URL
URL이 정상이라면 다음과 같이 표시됩니다.
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Remote file exists and could contain further links, but recursion is disabled -- not retrieving.
이렇게 하면 예약된 시간에 다운로드가 성공할 것임을 보장할 수 있습니다. 반대로 잘못된 URL을 입력하면 아래와 같은 오류가 출력됩니다.
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 404 Not Found Remote file does not exist -- broken link!!!
spider 옵션은 다음과 같은 상황에서 활용할 수 있습니다.
- 예약 다운로드 실행 전 사전 점검
- 일정 간격으로 특정 웹사이트의 정상 작동 여부 모니터링
- 북마크에 저장해 둔 페이지 목록 중 아직 살아있는 페이지 찾기
8. wget –tries로 재시도 횟수 늘리기
인터넷 연결이 불안정하거나 파일이 매우 크면 다운로드가 실패할 수 있습니다. wget은 기본적으로 20번까지 재시도하지만, 필요하다면 --tries 옵션으로 횟수를 늘릴 수 있습니다.
$ wget --tries=75 DOWNLOAD-URL
9. wget -i로 여러 파일/URL 한 번에 다운로드하기
먼저 다운로드할 URL 목록을 텍스트 파일에 저장합니다.
$ cat > download-file-list.txt URL1 URL2 URL3 URL4
그다음 -i 옵션에 해당 파일을 인자로 넘기면 목록의 모든 URL을 순차적으로 다운로드합니다.
$ wget -i download-file-list.txt
10. wget –mirror로 웹사이트 전체 미러링하기
웹사이트 전체를 내려받아 로컬에서 열람하고 싶다면 아래 명령을 사용합니다.
$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
--mirror: 미러링에 적합한 옵션들을 일괄 활성화합니다.-p: HTML 페이지를 올바르게 표시하는 데 필요한 모든 파일(이미지, CSS 등)을 함께 내려받습니다.--convert-links: 다운로드 완료 후 문서 내 링크를 로컬에서 볼 수 있도록 변환합니다.-P ./LOCAL-DIR: 모든 파일과 디렉터리를 지정한 경로에 저장합니다.
11. wget –reject로 특정 파일 형식 제외하고 다운로드하기
유용한 웹사이트를 찾았지만 이미지는 받고 싶지 않다면 --reject 옵션으로 제외할 확장자를 지정할 수 있습니다.
$ wget --reject=gif WEBSITE-TO-BE-DOWNLOADED
12. wget -o로 로그를 파일에 기록하기
터미널 대신 로그 파일에 기록을 남기고 싶을 때 -o 옵션을 사용합니다.
$ wget -o download.log DOWNLOAD-URL
13. wget -Q로 용량 제한 초과 시 다운로드 중단하기
다운로드 용량이 5MB를 넘으면 자동으로 멈추게 하려면 아래와 같이 -Q 옵션을 사용합니다.
$ wget -Q5m -i FILE-WHICH-HAS-URLS
참고: 이 할당량(quota)은 단일 URL 다운로드에는 적용되지 않습니다. 즉, 파일 하나를 지정하면 할당량과 무관하게 전부 내려받습니다. 이 옵션은 재귀적(recursive) 다운로드에만 유효합니다.
14. wget -r -A로 특정 형식의 파일만 다운로드하기
다음과 같은 상황에서 유용하게 쓸 수 있습니다.
- 웹사이트의 모든 이미지 내려받기
- 웹사이트의 모든 동영상 내려받기
- 웹사이트의 모든 PDF 파일 내려받기
$ wget -r -A.pdf https://url-to-webpage-with-pdfs/
15. wget으로 FTP 다운로드하기
wget은 FTP 프로토콜을 통한 다운로드도 지원합니다.
익명(Anonymous) FTP 다운로드:
$ wget ftp-url
사용자 이름과 비밀번호 인증이 필요한 FTP 다운로드:
$ wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
이 글이 도움이 되었다면 북마크나 공유 부탁드립니다!