불행히도 모든 파일을 수십 번 복제하지 않고 보관 된 웹 사이트에서 완전한 미러를 만드는 문제를 해결할 수있는 대답은 없었습니다. 그래서 다른 접근법을 함께 해킹했습니다. 내 솔루션이 일반적인 솔루션이나 매우 간단한 (읽기 : 복사 및 붙여 넣기) 솔루션이 아니기 때문에 해킹 은 중요한 단어입니다. wget으로 미러링하는 동안 Privoxy Proxy Server 를 사용하여 파일 을 즉석에서 다시 썼습니다.
그러나 먼저 Wayback Machine의 미러링에있어 어려운 점은 무엇 입니까?
문제 1 + 해결책
Wayback 도구 모음은 대화식 사용에 편리하지만 wget을 방해 할 수 있습니다. privoxy 필터 규칙으로 제거하십시오.
FILTER: removewaybacktoolbar remove Wayback toolbar
s|BEGIN WAYBACK TOOLBAR INSERT.*END WAYBACK TOOLBAR INSERT|Wayback Toolbar removed|s
문제 2 + 해결책
전체 사이트를 캡처하고 싶기 때문에 너무 작은 재귀 깊이가 필요했습니다. 그러나 wget이 전체 서버를 크롤링하고 싶지 않습니다. 일반적으로 해당 목적을 위해 부모없는-np
wget 옵션 을 사용합니다 . 그러나 여기에서 작동하지 않습니다.
http://web.archive.org/web/ 20110722080716 /http://cst-www.nrl.navy.mil/lattice/struk/hcp.html
뿐만 아니라
http://web.archive.org/web/ 20110801041529 /http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
(경로에서 변경된 타임 스탬프에 유의하십시오). 생략 -np
하면 wget까지 크롤링 (...)http://cst-www.nrl.navy.mil
하고 결국 전체 navi.mil
사이트를 검색합니다 . 나는 분명히 그것을 원하지 않는다! 따라서이 필터는 -np
Wayback 시스템 의 동작 을 에뮬레이트하려고 합니다.
FILTER: blocknonparentpages emulate wget -np option
s|/web/([0-9].*)/http://cst-www.nrl.navy.mil/lattice/|THIS_IS_A_GOOD_$1_ADDRESS|gU
s|/web/(.*)/http(.*)([" ])|http://some.local.server/404$3|gU
s|THIS_IS_A_GOOD_(.*)_ADDRESS|/web/$1/http://cst-www.nrl.navy.mil/lattice/|gU
구문을 파는 연습으로 남겨 두겠습니다. 이 필터의 기능은 다음과 같습니다. 모든 Wayback URL을 포함 하지 않는http://web.archive.org/web/20110801041529/http://www.nrl.navy.mil/
한 http://some.local.server/404
으로 대체 합니다 .http://cst-www.nrl.navy.mil/lattice/
조정해야합니다 http://some.local.server/404
. 이것은 wget에 404 오류를 보내는 것입니다. 아마도 privoxy가 더 우아하게 할 수 있습니다. 그러나 가장 쉬운 방법은 로컬 http 서버에 존재하지 않는 페이지에 대한 링크를 다시 작성하는 것이 었습니다.
그리고, 당신은 또한 조정해야 모두 발행 수 의를 http://cst-www.nrl.navy.mil/lattice/
미러링 할 사이트를 반영 할 수 있습니다.
문제 3 + 해결책
마지막으로 일부 아카이브 된 버전의 페이지가 다른 스냅 샷의 페이지에 링크 될 수 있습니다. 그리고 그것은 또 다른 하나입니다. 그리고 등등 ... 그리고 당신은 같은 페이지의 많은 스냅 샷으로 끝날 것입니다-wget은 모든 스냅 샷 을 가져 오기 전까지는 완료되지 않습니다 . 나는 정말로 그것을 원하지 않습니다! Wayback 머신이 매우 똑똑하다는 것이 여기에 많은 도움이됩니다. 파일을 요청할 수 있습니다
http://web.archive.org/web/ 20110801041529 /http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
20110801041529
스냅 샷에 포함되지 않은 경우에도 마찬가지 입니다. 그것은 자동으로 올바른로 리디렉션 :
http://web.archive.org/web/ 20110731225728 /http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
따라서 모든 스냅 샷을 최신 스냅 샷으로 다시 작성하는 또 다른 privoxy 필터
FILTER: rewritewaybackstamp rewrite Wayback snapshot date
s|/([0-9]{14})(.{0,3})/|/20120713212803$2/|g
사실상 14 자리 숫자로 묶인 모든 숫자 /.../
가 대체됩니다 20120713212803
(원하는 사이트의 가장 최근 스냅 샷으로 조정). 사이트 구조에 Wayback 시스템에서 시작되지 않은 숫자가있는 경우 문제가 될 수 있습니다. 완벽하지는 않지만 Strukturtypen 사이트 에는 적합합니다 .
이것에 대한 좋은 점은 wget이 리디렉션 된 새 위치를 무시하고 위의 시험에서 파일을으로 저장한다는 것 web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html
입니다.
보관 된 사이트를 미러링하기 위해 wget 사용
마지막으로 이러한 privoxy 필터 (에서 정의 됨 user.filter
)를 user.action
통해
{ +filter{removewaybacktoolbar} +filter{blocknonparentpages} +filter{rewritewaybackstamp} }
web.archive.org
평소처럼 wget을 사용할 수 있습니다. wget에게 프록시를 사용하도록 지시하는 것을 잊지 마십시오.
export http_proxy="localhost:8118"
wget -r -p -k -e robots=off http://web.archive.org/web/20120713212803/http://cst-www.nrl.navy.mil/lattice/index.html
이 옵션을 사용했지만 -m
작동해야합니다. 폴더가 생깁니다
20120713212803
20120713212803cs_
20120713212803im_
20120713212803js_
Wayback 기계는 이미지 ( im_
), 스타일 시트 ( cs_
) 등을 분리합니다 . 나는 모든 것을 하나로 모으고 추한 상대 링크 ( ../../../../20120713212803js_/http:/cst-www.nrl.navy.mil/lattice
) 를 대체하기 위해 sed magic을 사용했습니다 . 그러나 이것은 실제로 필요하지 않습니다.
20110722080716
스냅 샷에서 모든 파일에 액세스 할 수-np
는 없으므로 wget의 옵션이 도움이되지 않는다는 것입니다.