wget 유틸리티는 인터넷에서 파일을 다운로드하는 가장 좋은 옵션입니다. wget은 대용량 파일 다운로드, 재귀적 다운로드, 비대화형 다운로드, 다중 파일 다운로드 등을 포함한 모든 복잡한 다운로드 상황을 거의 처리할 수 있습니다.
이 기사에서는 wget 사용 방법을 검토해 보겠습니다. 15가지 멋진 wget 예제를 사용하여 다양한 다운로드 시나리오를 구현하세요.
1. wget으로 단일 파일 다운로드
다음 예에서는 인터넷에서 단일 파일을 다운로드하여 현재 디렉터리에 저장합니다.
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
다운로드하는 동안 다음 정보가 포함된 진행률 표시줄이 표시됩니다:
- 다운로드 완료율(예:아래와 같이 31%)
- 지금까지 다운로드된 총 바이트 양(예:아래와 같이 1,213,592바이트)
- 현재 다운로드 속도(예:아래와 같이 68.2K/s)
- 남은 다운로드 시간(예:아래와 같이 34초 소요)
다운로드 진행 중:
$ wget http://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 http://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은 마지막 슬래시 뒤의 마지막 단어에서 파일 이름을 선택하는데, 이는 항상 적절하지 않을 수 있습니다.
틀림: 다음 예는 이름이 download_script.php?src_id=7701인 파일을 다운로드하고 저장합니다.
$ wget http://www.vim.org/scripts/download_script.php?src_id=7701
다운로드한 파일이 zip 형식이더라도 아래와 같은 파일로 저장됩니다.
$ ls download_script.php?src_id=7701
정확함: 이 문제를 해결하려면 -O 옵션을 사용하여 출력 파일 이름을 다음과 같이 지정할 수 있습니다.
$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
3. wget –limit-rate를 사용하여 다운로드 속도/다운로드 속도 지정
wget을 실행하는 동안 기본적으로 가능한 전체 대역폭을 차지하려고 시도합니다. 프로덕션 서버에서 대용량 파일을 다운로드하는 경우 이는 허용되지 않을 수 있습니다. 따라서 이를 방지하기 위해 아래와 같이 –limit-rate를 사용하여 다운로드 속도를 제한할 수 있습니다.
다음 예에서는 다운로드 속도가 200k로 제한됩니다.
$ wget --limit-rate=200k http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
4. wget -c를 사용하여 불완전한 다운로드 계속하기
아래와 같이 wget -c 옵션을 사용하여 중간에 중단된 다운로드를 다시 시작하세요.
$ wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
이는 중간에 중단된 매우 큰 파일 다운로드를 시작한 경우 매우 유용합니다. 전체 다운로드를 다시 시작하는 대신 -c 옵션을 사용하여 중단된 부분부터 다운로드를 시작할 수 있습니다.
참고: 다운로드가 중간에 중지된 경우 -c 옵션 없이 다운로드를 다시 시작하면 wget은 이전 이름을 가진 파일이 이미 존재하므로 파일 이름에 자동으로 .1을 추가합니다. .1의 파일이 이미 존재하는 경우 끝에 .2의 파일을 다운로드합니다.
5. wget -b를 사용하여 백그라운드에서 다운로드
대용량 다운로드의 경우 아래와 같이 wget 옵션 -b를 사용하여 다운로드를 백그라운드에 두세요.
$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Continuing in background, pid 1984. Output will be written to `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를 사용하여 브라우저처럼 wget 표시
일부 웹사이트에서는 사용자 에이전트가 브라우저가 아님을 식별하여 페이지 다운로드를 허용하지 않을 수 있습니다. 따라서 –user-agent 옵션을 사용하여 사용자 에이전트를 마스크하고 아래와 같이 브라우저처럼 wget을 표시할 수 있습니다.
$ 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 테스트
예약된 다운로드를 하려고 할 때, 예약된 시간에 다운로드가 잘 되는지 확인해야 합니다. 그러기 위해서는 일정에서 해당 라인을 정확하게 복사한 후 –spider 옵션을 추가하여 확인하시면 됩니다.
$ 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!!!
다음 시나리오에서 스파이더 옵션을 사용할 수 있습니다:
- 다운로드를 예약하기 전에 확인하세요.
- 특정 간격으로 웹사이트 사용 가능 여부를 모니터링합니다.
- 북마크의 페이지 목록을 확인하고 어떤 페이지가 아직 존재하는지 알아보세요.
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 옵션을 사용하여 download-file-list.txt를 wget에 인수로 제공합니다.
$ wget -i download-file-list.txt
10. wget –mirror를 사용하여 전체 웹사이트 다운로드
다음은 전체 웹사이트를 다운로드하여 로컬에서 볼 수 있도록 하려는 경우 실행하려는 명령줄입니다.
$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
- –mirror :미러링에 적합한 옵션을 켭니다.
- -p :특정 HTML 페이지를 올바르게 표시하는 데 필요한 모든 파일을 다운로드합니다.
- –convert-links :다운로드 후 로컬에서 볼 수 있도록 문서의 링크를 변환합니다.
- -P ./LOCAL-DIR :모든 파일과 디렉터리를 지정된 디렉터리에 저장합니다.
11. wget –reject를 사용하여 다운로드하는 동안 특정 파일 형식 거부
유용한 웹사이트를 찾았지만 이미지를 다운로드하고 싶지 않다면 다음을 지정하세요.
$ wget --reject=gif WEBSITE-TO-BE-DOWNLOADED
12. wget -o를 사용하여 stderr 대신 로그 파일에 메시지 기록
로그를 터미널이 아닌 로그 파일로 리디렉션하고 싶을 때.
$ wget -o download.log DOWNLOAD-URL
13. wget -Q를 사용하여 특정 크기를 초과하면 다운로드를 종료합니다.
5MB를 초과할 때 다운로드를 중지하려면 다음 wget 명령줄을 사용할 수 있습니다.
$ wget -Q5m -i FILE-WHICH-HAS-URLS
참고: 단일 URL을 다운로드하는 경우에는 이 할당량이 적용되지 않습니다. 이는 할당량 크기와 관계없이 단일 파일을 지정하면 모든 항목이 다운로드됩니다. 이 할당량은 반복 다운로드에만 적용됩니다.
14. wget -r -A를 사용하여 특정 파일 형식만 다운로드
다음과 같은 상황에서 이 기능을 사용할 수 있습니다:
- 웹사이트에서 모든 이미지 다운로드
- 웹사이트에서 모든 동영상을 다운로드하세요
- 웹사이트에서 모든 PDF 파일 다운로드
$ wget -r -A.pdf http://url-to-webpage-with-pdfs/
15. wget으로 FTP 다운로드
아래와 같이 wget을 사용하여 FTP 다운로드를 수행할 수 있습니다.
Wget을 사용한 익명 FTP 다운로드
$ wget ftp-url
사용자 이름 및 비밀번호 인증과 함께 wget을 사용하여 FTP를 다운로드합니다.
$ wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
이 기사가 마음에 드셨다면 맛있음 또는 Stumble로 북마크해 주세요.