Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

wget 완벽 활용 가이드: 실전에서 바로 쓰는 15가지 강력한 다운로드 예제

wget 완벽 활용 가이드: 실전에서 바로 쓰는 15가지 강력한 다운로드 예제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

이 글이 도움이 되었다면 북마크나 공유 부탁드립니다!