관리 메뉴


Kinesis´s Open Document

WGET : wget 명령어를 이용해 디렉토리 및 사이트 일괄 다운로드 받기 본문

MEMO/기술 자료/Other

WGET : wget 명령어를 이용해 디렉토리 및 사이트 일괄 다운로드 받기

Kinesis 2016. 8. 24. 16:39

다음과 같은 필요가 발생할 경우 직접적으로 하나씩 다운로드 받는것은 누락되는 부분이 있을 수 있고 불필요한 인력비용 및 시간이 많이 소요된다.


디렉토리 인덱싱이 가능한 페이지 또는 디렉토리 내 파일 다운로드 받기

스크랩 하고자 하는 사이트의 링크등을 일괄적으로 다운로드 받기


만약 이와 같은 필요가 발생할 경우 어떠한 방법으로 파일 및 페이지를 다운로드 받을 수 있을까? 이 경우 wget 이라는 명령어를 활용한다면 일괄적으로 다운로드가 가능하다. 리눅스에서는 wget 을 apt-get 또는 yum 을 통해 설치 후 사용할 수 있고, 윈도우의 경우도 wget 파일을 다운로드 받아 설치 후 이용을 할 수 있다.


특정 URL을 바탕으로 해당 경로 또는 페이지와 연관된 파일들을 다운로드 받기 위해서는 다음과 같은 명령어를 사용할 수 있다.

root@localhost:/# wget -r -l 99 "http://target"

여기서 -r 스위치 옵션은 하위 디렉토리가 존재하는 경우 하위 디렉토리까지 접근하여 다운로드 하라는 명령이고 -l (L 소문자) 의 경우 다운로드 받을 링크 레벨을 몇개까지 허용할 것인가라는 것으로 내려받을 링크의 단계를 설정하면 된다.


만약 svn 등을 이용해 인증이 필요한 페이지에서 이미 로그인을 한 경우 네트워크 패킷을 확인하면 인증된 값을 확인해 볼 수 있는데, 이 경우 요청시 Authorization 라는 헤더 값이 전달된다. 단순히 로그인을 이용하는 방법도 있으나 직접 요청 헤더에 값을 추가하는 방법을 이용할 경우 다음과 같은 방법도 사용 가능하다. (다음의 명령어 참조)

root@localhost:/# wget -r -l 99 "http://target/svn/repos/" --header="Authorization: Basic abcdefghijklmnopqrstuvwxyzAB"

경우에 따라서 robots.txt 에 의한 접근 제어로 파일을 다운로드 받지 못하는 경우가 발생할 수 있다. 이 경우에는 -e robots=off 스위치 옵션을 줄경우 robots.txt 정의는 무시한 채 다운로드 작업을 수행할 수 있다. (다음의 명령어 참조)

root@localhost:/# wget -r -l 99 "http://target/svn/repos/" --header="Authorization: Basic abcdefghijklmnopqrstuvwxyzAB" -e robots=off

또 다른 경우로 Repository 경로를 지정하였으나 상위 Root로 가는 링크가 있거나 하는 경우 불필요하게 상위에 존재하는 소스나 페이지까지 다운로드가 발생하여 내가 원하는 부분만을 빠르게 얻지 못하고 지연이 되는 경우가 발생할 수 있는데, 이 경우 -np 스위치 옵션을 주는 경우 지정한 경로보다 상위 경로에 있는 내용은 다운로드 하지 않게 된다. (다음의 명령어 참조)

root@localhost:/# wget -r -l 99 "http://target/svn/repos/" --header="Authorization: Basic abcdefghijklmnopqrstuvwxyzAB" -e robots=off -np

만약 상대경로만 다운로드 받고 외부 링크를 참조하기 위해 전체 경로가 적혀 있는 등의 상황에 대비하고자 한다면 -L 스위치를 주면 절대경로로 되어 있는 링크는 무시하고 상대경로로 참조된 페이지 또는 파일 등만 다운로드 받게 할 수도 있다. (다음의 명령어 참조)

root@localhost:/# wget -r -l 99 "http://target/svn/repos/" --header="Authorization: Basic abcdefghijklmnopqrstuvwxyzAB" -e robots=off -np -L

얼추 이정도만 알고 있어도 필요한 파일을 다운로드하는데는 큰 문제는 없다.

나머지 옵션은 기본 교양지식에 따라 "문자열*" 이나 "*.xml" 같은 패턴을 이용하는 등의 활용방법을 적절히 이용하도록 한다.


Comments