UNIX/Linuxの部屋 wgetコマンドの使い方

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




コマンド wget HTTP・FTP ダウンローダ このエントリーをはてなブックマークに追加

wget コマンドは、高機能ダウンローダである。HTTP・HTTPS・FTP に対応、再帰的取得、ファイル名のワイルドカード指定、ヘッダの書き換えなど、便利な機能が多い。



wget コマンドの基本的な使い方
wget コマンドは、引数で指定した URL からデータをダウンロードし、カレントディレクトリに保存する。以下の例ではカレントディレクトリに bar.html というファイル名で保存する。
% wget http://www.example.com/foo/bar.html
--12:14:52-- http://www.example.com/foo/bar.html
=> `bar.html'
Resolving www.example.com... done.
Connecting to www.example.com[192.168.45.54]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 401,907 [text/html]

57% [==============================> ] 232,180 16.85K/s ETA 00:09
上記のようにプログレスバーや残り時間が表示されるので進捗がわかりやすい。

URL の最後がファイル名でなくディレクトリ名だった場合は、index.html というファイル名で保存する。
% wget http://www.example.com/foo/
⇒ カレントディレクトリに index.html として保存
既にカレントディレクトリに同名ファイルが存在していた場合は、「ファイル名.1」で保存しようとする。「ファイル名.1」も存在していた場合は「ファイル名.2」となる (例: index.html -> index.html.1 -> index.html.2 -> ...)

ftp サーバからもダウンロードができる。
% wget ftp:/ftp.example.com/abc.tar.gz
⇒ カレントディレクトリに abc.tar.gz として保存

また、
% wget -r http://www.example.com/bar/
とすると、再帰的にファイルを取得する。この場合はカレントディレクトリに
www.example.com/
www.example.com/bar/
www.example.com/bar/hoge/
www.example.com/bar/hoge/foga/
とディレクトリが自動的に作成される。

全般系オプション
-d (--debug) サーバに送信するリクエストや、サーバからのレスポンスヘッダなど、デバッグ情報を表示する。
-S (--server-response) サーバからのレスポンスヘッダを表示する。Content-Type・Content-Length・Set-Cookie などの値を確認する際に使用するとよい。
-O [ファイル] 指定したファイルにコンテンツを保存する。-O - とすると、標準出力に出力する。例: wget -O output.html http://www.example.com/→ output.html に取得したコンテンツを保存する。
-N (--timestamping) タイムスタンプを比較し、変更されていないならダウンロードしない。過去に一度ダウンロードしたものを再度取得するとき -N を付けると、取得時間を短縮できる。ただし、対象ファイルが Last-Modified ヘッダを表示してくれないと効果はない。
-nc (--no-clobber) 既にローカルにダウンロード済のファイルは取得しない。-N オプションと違って、タイムスタンプを見るわけではなく、同名のファイルが存在するだけでダウンロードしないことに注意。-nc オプションは -N オプションと同時には指定できない。
-c (--continue) ファイルの続きからダウンロードする。一度ファイルをダウンロードしようとしたが、回線状況が悪く途中で切断されてしまったとき、-c オプションを付けるとローカルにあるファイルの続きからダウンロードする。
-L (--relative) 絶対リンク (<a href="http://www.foo.com/bar.html">) はたどらず、相対リンク(<a href="file.html"> のみを再帰的にたどる。

ヘッダ系オプション
--header=[ヘッダ内容] リクエストに追加ヘッダを指定したい場合に使う。wget が標準で設定するヘッダ (User-Agent など) を設定した場合、指定した内容で上書きされる。例: wget --header="User-Agent: xxxx" 例: wget --header="Cookie: foo=bar; abc=def" 例: wget --header="Referer: http://example.com" 例: wget --header="Host: http://example.com" 例: wget --header="Accept-Encoding: gzip,deflate"
--user-agent=[ユーザエージェント文字列] User-Agent の値を指定する。--user-agent="" とすると、User-Agent ヘッダ自体を送信しない。
--http-user=[ユーザ名]、--http-password=[パスワード] Basic 認証や Digest 認証の際のユーザ名とパスワードを指定する。

接続・タイムアウト系オプション
--limit-rate=[最大速度] ダウンロードの際、速度制限を行う。最大速度は 10k (10KByes/sec)、1m (1MBytes/sec)、12.5m (12.5Mbytes/sec) などと指定する。
-t (--tries) エラー発生時にリトライを行う回数を指定。-t 5 でリトライ回数 5回となる。0 か inf を指定すると、無限にリトライを続ける (使用しない方がよいだろう)。デフォルトは20回であるが、Connection Refused や 404 などの致命的なエラーが発生した場合は、そこで処理を打ち切る。
--limit-rate=[最大速度] ダウンロードの際、速度制限を行う。最大速度は 10k (10KByes/sec)、1m (1MBytes/sec)、12.5m (12.5Mbytes/sec) などと指定する。
-T (--timeout) タイムアウト秒数を設定する。-T 10 でタイムアウト10秒となる。-T 0.1 などと1秒未満の単位で指定することもできるタイムアウトになった場合、リトライ処理が行なわれるが、リトライ回数のデフォルトは 20回である。-t オプションで変更できる。より詳しく書くと、--dns-timeout、--connect-timeout、--read-timeout の3種類のタイムアウト値があり、-T (--timeout) はこの3種類すべてに同じ値を設定する、という意味である。

再帰リンク系オプション
-r (--recursive) 再帰的にダウンロードする。-l,-nv も指定した方がよい。
-l (--level) 再帰的にリンクをたどる数を指定する。-l 10 や --level=10 などと指定する。デフォルトは5。