wgetでサイトをまるごと落とす方法

/ Linux/Unix / Comment[0]

内容にサーバーの移転を含むお客さんの案件を受けたのですが、セキュリティポリシーがらみか何かでFTP情報とHTMLソースなどを渡せないということで、止む終えなくこちら側がwgetでサイト全体をミラーリングしようということになりました。

これから同じようなことがありそうなのでwgetについてメモっておきます。

wgetの主なオプション

割と重要そうなオプションを上げてみます。

  • -m ミラー 「-N -r -l inf --no-remove-listing」のエイリアス
  • -t リトライ回数
  • -r 再帰的に取得
  • -l リンクをたどる回数 (inf,0 =無限)
  • -np 親階層は無視
  • -N タイムスタンプを維持
  • -w 指定した秒数待つ
  • --random-wait -wで指定した秒数×0.5~1.5の範囲でランダムで待つ

wgetでサーバーに親切に落としてみる

結論から言いますと、下記のコマンドで落としました。

# wget -m -w 2 --random-wait http://example.com

このコマンドの説明を簡単に書きます。

ミラーリングの注意点

  • なるべく負荷を少なくする
  • ファイルの漏れが無いように確実に全部落とす必要がある
  • できるかぎり迅速に

wgetでミラーリングするには-mという便利なオプションがあります。しかしこれではウェイトタイムなしにリクエストを送ってしまします。そうするとサーバーの大きな負担となりかねませんので-wオプションでウェイトタイムを設定します。

しかし、そのままピッタリ一定時間置きにファイルをダウンロードし続けると、もしかしたらファイアーウォールなどのポリシーによってはbotなどとして認識されアクセス制限を受けてしまう可能性もあります。
そこで待ち時間を--random-waitで-wで指定した秒数×0.5~1.5の間でランダムにします。
こうすることでファイアーウォールを回避するために少ないウェイトタイムで済む場合があります。

関連記事

コメント

:
:
:
:
:
管理人のみ表示を許可