wget으로 사이트 미러링(복제)하기

예를들어 카카오 컨퍼런스(https://if.kakao.com )의 내용이 공개되었을 경우, 해당 파일을 다운로드해서 태블릿등에서 보고 싶을때. 해당 페이지에서 클릭클릭해서 다운로드 하는 것 보다 통째로 저장하는 방법이 없을까 찾아봤더니, shell중 wget이 해당 기능을 쉽게 구현한다.

wget으로 사이트 다운로드 받기

긴 포멧 옵션

wget --recursive --level=inf --page-requisites --convert-links \
     --adjust-extension --span-hosts --domains=domainA,domainB domainA

짧은 포멧 옵션

wget -rpkEH -l inf -D domainA,domainB domainA
  • -r = --recursive 순환
  • -l <depth> = --level=<depth> 링크 depth (inf0일 경우 무한)
  • -E = --adjust-extension HTML형태에 맞는 확장자로 저장
  • -p = --page-requisites HTML에 맞는 이미지 포함
  • -K = --backup-converted 변환된 파일에 대해 백업 파일을 생성
  • -k = --convert-links 다운받은 HTML에 맞도록 링크 고정
  • -D <domain-list> = --domain-list=<domain-list> 포함할 도메인 대상을 지정
  • --exclude-domains to specify domains to be excluded
  • -H = --span-hosts
  • -np = --no-parent 상위로 올라가지 않음
  • -U <agent-string> = --user-agent=<agent-string> 브라우저 agent 값을 지정

다음과 같이 수행하면 해당 디렉토리가 생성되며 관련 파일이 다운된다.

# 기본 페이지 가져오기
$ wget --recursive --level=inf --page-requisites --convert-links --html-extension if.kakao.com

그런데, PDF파일을 웠했던 것인데, 해당 파일은 다른 도메인이라 추가 다운로드가 안된다;; --domain-list옵션을 주긴 했는데 왠지 잘 작동하지 않음; 그래서 해당 도메인만 다운받도록 링크 필터

# mk.kakaocdn.net 첨부파일들은 추출이 안되어서 별도 추출
# program에서 href 링크를 추출
$ cat if.kakao.com/program.html | grep -Eoi '<a [^>]+>' | grep -Eo 'href="[^\"]+"' | grep -Eo '(http|https)://[^"]+pdf' > 2019resource.list
$ cat if.kakao.com/2018/program.html | grep -Eoi '<a [^>]+>' | grep -Eo 'href="[^\"]+"' | grep -Eo '(http|https)://mk.kakaocdn.net[^"]+pdf' >  2018resource.list

해당 파일은 대강 다음처럼 생김

https://mk.kakaocdn.net/dn/if-kakao/conf2019/%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C_2019/T01-S01.pdf
https://mk.kakaocdn.net/dn/if-kakao/conf2019/%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C_2019/T03-S01.pdf
https://mk.kakaocdn.net/dn/if-kakao/conf2019/%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C_2019/T02-S01.pdf
https://mk.kakaocdn.net/dn/if-kakao/conf2019/%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C_2019/T04-S01.pdf
https://mk.kakaocdn.net/dn/if-kakao/conf2019/%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C_2019/T05-S01.pdf
https://mk.kakaocdn.net/dn/if-kakao/conf2019/%EB%B0%9C%ED%91%9C%EC%9E%90%EB%A3%8C_2019/T01-S02.pdf

이걸 소스로 해서 다시 다운로드함. wget-x 옵션이 있을 경우 디렉토리 위치까지 강제 생성

$ wget -x -i 2018resource.list
$ wget -x -i 2019resource.list

마지막으로 html 파일들 내부의 링크를 변환하면 되는데… 그건 생략

이게 다운로드하는게 중요한게 아니라 보는게 중요한데… 틈나는대로 봐야함

참고