🌐
【wget】Webサイトを丸ごとローカル環境にダウンロードする備忘録
はじめに
管理者画面にアクセスできなくなったワードプレスのサイトがあり、保存しておきたい場面がありました。その方法とハマりどころをまとめます。
環境
- Mac OSX 10.15(19A602)
wgetの準備
Webサーバーからコンテンツをダウンロードするためのコマンドです。
$ brew install wget
Webサイトの一括ダウンロード
$ wget -rkp -l 3 http://example.com/
-
-r,--recursive: 再帰ダウンロードを行う -
-k,--convert-links: HTML や CSS 中のリンクをローカルを指すように変更する- 変更されるのは全てのダウンロードが終了後に行われるので、ダウンロード中に確認しても適用されていない点に注意
-
-p,--page-requisites: HTML を表示するのに必要な全ての画像等も取得する -
-l,--level=NUMBER: 再帰時の階層の最大の深さを NUMBER に設定する (0 で無制限)
課題
再起的に保存する.cssや.jsにURLパラメータが付いていることがあり、URLパラメータ付きの名前として保存されてしまっていた。保存時に?や&はエスケープされてしまうためローカルHTML上からアクセスできない問題が発生した。
参照が外れている.css, .jsファイルをリネーム(?以下を削除)することで解決した。
(数が多くなかったので手動で対応したが、多い場合は正規表現などで置換できそう。)
試したが使わなかったコマンド
-
-H,--span-hosts: 再帰中に別のホストもダウンロード対象にする- あまり外部ドメインに依存していなかった
-
--content-disposition: Content-Dispositionで指定されたファイル名で保存する
最後に
-kの適用タイミングで結構ハマりました。
Discussion