残念なことに、アーカイブされたWebサイトから完全なミラーを作成する問題を解決できる回答はありませんでした(すべてのファイルを何十回も複製することなく)。そこで、別のアプローチを一緒にハックしました。ハッキングは重要な言葉です。私の解決策は一般的な解決策でも、非常に単純な(コピーアンドペースト)解決策でもないからです。Privoxyプロキシサーバーを使用して、wgetでミラーリングしながらオンザフライでファイルを書き換えました。
しかし、最初に、Wayback Machineからのミラーリングでこれほど難しいのは何ですか?
問題1 +ソリューション
Waybackツールバーはインタラクティブな使用には便利ですが、wgetに干渉する可能性があります。privoxy filterルールでそれを取り除きます
FILTER: removewaybacktoolbar remove Wayback toolbar
s|BEGIN WAYBACK TOOLBAR INSERT.*END WAYBACK TOOLBAR INSERT|Wayback Toolbar removed|s
問題2 +ソリューション
私はサイト全体をキャプチャしたかったので、少なすぎない再帰の深さが必要でした。しかし、wgetがサーバー全体をクロールするのは望ましくありません。通常、この目的にはwgetの親なしオプションを使用します-np
。ただし、ここでは機能しません。
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
構文を掘り下げるための演習として残しておきます。何このフィルタが行うことは以下の通りである:それはのようにすべてのウェイバック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
ます(ご希望のサイトの最新のスナップショットに合わせて調整してください)。これは、ウェイバックマシンから発信されていないサイト構造にそのような番号がある場合に問題になる可能性があります。完璧ではありませんが、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_
ウェイバックマシンが画像(im_
)、スタイルシート(cs_
)などを分離するので、すべてを統合し、../../../../20120713212803js_/http:/cst-www.nrl.navy.mil/lattice
それに応じてい相対リンク()を置き換えるためにsedマジックを使用しました。しかし、これは本当に必要ではありません。
20110722080716
スナップショットですべてのファイルにアクセスできる-np
わけではないため、wgetのオプションが役に立たないことだと思います。