NHN Cloud 인스턴스에 MySQL을 설치하는 쉘 스크립트를 작성하면서 wget이라는 것을 알게 되었다.
리눅스에서 인터넷을 통해 파일을 받는 가장 좋은 방법은 wget 명령어를 사용하는 것이다.
단순히 단일 파일을 받는 정도로 사용하고 있었는데
다른 인턴분이 --spider 옵션 사용한 것을 보고 wget에 대해서 좀 더 자세히 알아볼까 한다!
✅ 공식문서
개념
- wget은 webget의 줄임말
- HTTP, HTTPS, FTP와 FTPS 등 가장 널리 사용되는 인터넷 프로토콜을 이용해 파일을 검색하기 위한 자유 소프트웨어 패키지
- 상호작용 하지 않는 (non-interactive) 커맨드라인 툴이기 때문에 스크립트, cron 작업, X-Windows 지원이 없는 터미널에서 쉽게 호출됨
특징
- REST와 RANGE를 사용해서 중단된 다운로드 재개 가능
- 파일 이름 와일드카드를 사용하고, 디렉토리를 재귀적으로 미러링 가능
- Windows, 대부분의 UNIX-like OS에서 사용 가능
- HTTP 프록시, 쿠키와 영속적인 커넥션 지원
- 미러링할 때 문서를 다시 다운로드 해야 하는지 여부 결정을 위해 로컬 파일 타임스탬프 사용
사용법
wget [option]… [URL]…
1. 다운로드 가능한지 확인하기
URL이 broken link인지 확인해주는 옵션으로 --spider를 사용하면 된다.
header 정보만 받아서 보여주는 기능이다.
wget --spider [URL]
공식문서에서는 다운로드가 가능한 페이지인지 확인하는 것이 거의 마치 real 웹 스파이더처럼 동작하는 것이라고 적혀 있다 (ㅋㅋ)
2. 단일 파일 받기
wget [URL]
다운로드 동안 다음의 정보를 확인할 수 있다.
- 현재까지 다운로드 받은 퍼센트
- 현재까지 다운로드 받은 바이트 수
- 다운로드 속도
- 완료까지 남은 시간
3. 다른 이름으로 저장하기
-O 옵션으로 파일을 원하는 파일이름으로 다운로드 받을 수 있다.
wget -O [파일이름] [URL]
4. 다운로드 속도 지정
기본적으로는 가능한 최대 대역폭을 사용하지만, 대량의 파일을 받을 때는 대역폭을 조절할 필요가 있다.
wget --limit-rate=[대역폭] [URL]
5. 이어받기
-c 옵션으로 다운로드 중에 중단됐을 경우 다시 시작할 수 있다.
대용량 파일을 다운로드 중에 멈추고 다른 작업을 해야했을 때 이전에 다운로드를 이어서 할 수 있어서 유용하다.
wget -c [URL]
6. 백그라운드에서 다운로드하기
-b 옵션으로 대용량 파일을 받을 때 백그라운드에서 처리할 수 있다.
wget -b [URL]
다운로드 상황은 모두 wget-log에 기록된다.
❗️tail -f wget-log로 확인 가능
7. 브라우저에서 다운로드 하는 것처럼 user-agent 정보 보내기
몇몇 사이트는 브라우저로 다운로드 하지 않으면 다운로드를 허가하지 않는 경우가 있다.
이 때 --user-agent 옵션으로 정보를 보낼 수 있다.
wget --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" [URL]
8. 재시도 횟수 지정하기
기본 재시도 횟수는 20이다. 더 많이 시도하고 싶으면 --tries 옵션으로 횟수를 조정할 수 있다.
wget --tries=[숫자] [URL]
9. 여러개의 파일 다운로드하기
여러 파일을 한번에 다운로드 할 때 유용하다. 다운로드 하고자 하는 링크를 파일에 쓰고 (엔터로 구분), -i 옵션과 파일 위치를 적으면 된다.
wget -i [file]
10. 로그파일 남기기
wget은 에러메시지를 stderr에 출력하는데 -o 옵션으로 지정한 파일에 로그를 남길 수 있다.
wget -o [로그파일명] [URL]
이 외에도 공식문서에 정말 많은 옵션이 있으니 참고해보면 좋을 것 같다.
Reference