만쥬의 개발일기
article thumbnail

wget의 개념

  • wget은 webget의 줄임말
  • HTTP, HTTPS, FTP와 FTPS 등 가장 널리 사용되는 인터넷 프로토콜을 이용해 파일을 검색하기 위한 자유 소프트웨어 패키지
  • 상호작용 하지 않는 (non-interactive) 커맨드라인 툴이기 때문에 스크립트, cron 작업, X-Windows(GUI) 지원이 없는 터미널에서 쉽게 호출됨

특징

  • REST와 RANGE를 사용해서 중단된 다운로드 재개 가능
  • 파일 이름 와일드카드를 사용하고, 디렉토리를 재귀적으로 미러링 가능
  • Windows, 대부분의 UNIX-like OS에서 사용 가능
  • HTTP 프록시, 쿠키와 영속적인 커넥션 지원
  • 미러링할 때 문서를 다시 다운로드 해야 하는지 여부 결정을 위해 로컬 파일 타임스탬프 사용

재귀적 미러링이란?
특정 디렉토리에 있는 모든 파일과 하위 디렉토리를 대상 서버로부터 로컬 시스템으로 복사하고 동기화하는 프로세스를 의미합니다. 이는 원격 서버의 디렉토리 구조와 파일을 로컬로 완전히 복제하여 두 디렉토리가 동일한 내용을 갖도록 하는 작업을 말합니다.

--recursive 옵션은 재귀적으로 미러링을 수행하라는 것을 나타내며,

--no-parent는 상위 디렉토리를 미러링하지 말라는 옵션입니다.

사용법

wget [option]… [URL]…

다운로드 가능한지 확인하기

URL이 broken link인지 확인해주는 옵션으로 --spider를 사용하면 된다.

header 정보만 받아서 보여주는 기능이다.

wget --spider [URL]

단일 파일 받기

wget [URL]

다운로드 동안 다음의 정보를 확인할 수 있다.

  • 현재까지 다운로드 받은 퍼센트
  • 현재까지 다운로드 받은 바이트 수
  • 다운로드 속도
  • 완료까지 남은 시간

다른 이름으로 저장하기

  • O 옵션으로 파일을 원하는 파일이름으로 다운로드 받을 수 있다.
wget -O [파일이름] [URL]

다운로드 속도 지정하기

기본적으로는 가능한 최대 대역폭을 사용하지만, 대량의 파일을 받을 때는 대역폭을 조절할 필요가 있다.

wget --limit-rate=[대역폭] [URL]

이어받기

  • c 옵션으로 다운로드 중에 중단됐을 경우 다시 시작할 수 있다.

대용량 파일을 다운로드 중에 멈추고 다른 작업을 해야했을 때 이전에 다운로드를 이어서 할 수 있어서 유용하다.

wget -c [URL]

백그라운드에서 다운로드하기

  • b 옵션으로 대용량 파일을 받을 때 백그라운드에서 처리할 수 있다.
wget -b [URL]

다운로드 상황은 모두 wget-log에 기록된다.

❗️tail -f wget-log로 확인 가능

브라우저에서 다운로드 하는 것처럼 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]

여러개의 파일 다운로드하기

여러 파일을 한번에 다운로드 할 때 유용하다. 다운로드 하고자 하는 링크를 파일에 쓰고 (엔터로 구분), -i 옵션과 파일 위치를 적으면 된다.

wget -i [file]

로그파일 남기기

wget은 에러메시지를 stderr에 출력하는데 -o 옵션으로 지정한 파일에 로그를 남길 수 있다.

wget -o [로그파일명] [URL]

사용 예시

wget --spider -r --no-parent <http://solved.ac>

위 명령어를 사용할 경우,

-r 옵션을 통해 재귀적으로 링크를 따라가며 확인하고,

—no-parent 옵션을 통해 상위 디렉토리를 따라가지 않고,

—spider 옵션을 통해 파일을 다운로드하지 않고 원격 서버와의 통신을 확인한다.

 

실행결과

실행 후 ,

ls -l solved.ac

위 명령어로 결과를 확인하면, 폴더 계층만을 다운로한 모습을 볼 수 있다.

 

reference

profile

만쥬의 개발일기

@KangManJoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!