wgetコマンドでCMSサイトを静的html化

CMSのサイトをもう更新しない,でもアーカイブとして残したいという場合CMSの機能は必要なくなります.メンテナンスコストやセキュリティの面からも動的じゃなく静的にしたほうが良いです.
ということでwgetコマンドを使って静的html化を試してみました.

$ wget --mirror --page-requisites --html-extension --convert-links http://example.com/

基本的にこれだけでOKでした.

  • –mirror

    • サイトのミラーに適したオプションです.再帰的な取得などを行います.次のオプションと同等です.-r -N -l inf --no-remove-listing
  • –page-requisites

    • ページに必要な画像やスタイルシートなどのコンテンツも取得します.
  • –html-extension

    • 取得したhtmlコンテンツの拡張子を.htmlに変換します.
  • –convert-links

    • 取得したコンテンツをダンロードしたコンテンツを参照するように書き換えます.例えばfoor/doc.htmlから/bar/img.gifを参照している場合 doc.html のリンクを../bar/img.gifと書き換えます.
  • http://example.com/

    • 取得したいsiteのurlです.

入手したアーカイブは静的htmlなので適当な場所に置いてアクセスすればOK.確認時は旧siteのコンテンツを見に行ったりしないように確認するマシンのhostsに以下のような細工をしました.

$ grep example.com /etc/hosts
127.0.0.1       example.com

大丈夫そうでしたが,検索ボックスはCMSの機能を使っているので動かなくなりました.検索ボックス自体を消してしまってもいいと思うのですが,今回はDuckDuckGoのものに変更してみました.これについては次のエントリにて.

今回試したCMSはImpress Pageです.参考にしたsiteではWordPressをアーカイブしていました.他のCMSでも応用が効きそうです.

参考URL

 

wgetの再試行オプション

楽しみにしていたRaspbianのダウンロードが止まってました.
停電やルーター不調とかで回線イマイチなのです.

なのでwgetcとか適当なscriptを用意して

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh

if [ $# -eq 0 ]; then
  echo "$0 URL" 1>&2
  exit 1
fi

while :
do

wget -c $1

if [ "$?" -eq 0 ]; then
  echo "Done!" 1>&2
  exit 0;
fi

sleep 1

done

chmod +x してこんな感じでダウンロード

$ wgetc http://vx2-downloads.raspberrypi.org/raspbian/images/raspbian-2017-09-08/2017-09-07-raspbian-stretch.zip ; wgetc http://vx2-downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-09-08/2017-09-07-raspbian-stretch-lite.zip ; sha256sum raspbian*.zip

3回ほどの試行でどうにか終わってました.

そして返り値ちゃんと確認するかとwgetのmanを見たら…….

       --retry-connrefused
           Consider "connection refused" a transient error and try again.  Normally Wget gives up on a URL when it is unable to connect to the site
           because failure to connect is taken as a sign that the server is not running at all and that retries would not help.  This option is for
           mirroring unreliable sites whose servers tend to disappear for short periods of time.
       --waitretry=seconds
           If you don't want Wget to wait between every retrieval, but only between retries of failed downloads, you can use this option.  Wget will use
           linear backoff, waiting 1 second after the first failure on a given file, then waiting 2 seconds after the second failure on that file, up to
           the maximum number of seconds you specify.

           By default, Wget will assume a value of 10 seconds.

実装されてましたorz

$ wget -c --retry-connrefused [URL]

な感じで良さそう.
次の機会に試してみます.