wget コマンドは、HTTP・HTTPS・FTP などのプロトコルを使ってファイルをダウンロードするためのコマンドです。
非対話型(non-interactive)で動作するため、バックグラウンド実行やバッチ処理、cron からの定期実行などに向いています。
単一ファイルのダウンロードだけでなく、
- 保存ファイル名の指定
- 途中からの再開(レジューム)
- 保存先ディレクトリの指定
- サイト全体の再帰的なダウンロード(ミラーリング)
- 帯域制限をかけたダウンロード
といった柔軟なダウンロード制御が可能です。
同じく HTTP クライアントとしては curl もよく使われますが、「ファイルを保存する」用途では wget がシンプルな場面も多いです。
wget [オプション] URL...
基本的には、取得したい URL を引数として指定するだけで、カレントディレクトリにファイルを保存します。
URL の末尾のファイル名(例: index.html、file.tar.gz)が、そのまま保存ファイル名として使われます。
保存ファイル名を自分で決めたい場合や、保存先ディレクトリを変えたい場合は、-O や -P などのオプションを使います。
・URL からファイルをダウンロードする(基本)
wget https://www.example.com/file.tar.gz
指定した URL からファイルをダウンロードします。
保存先はカレントディレクトリで、ファイル名は URL の末尾(この例では file.tar.gz)になります。
・保存ファイル名を指定してダウンロードする(-O)
wget -O app-latest.tar.gz https://www.example.com/download/app
-O ファイル名 で、保存するファイル名を明示的に指定します。
URL 側がダウンロードスクリプトだったり、クエリパラメータ付きの長い URL の場合でも、
シンプルなファイル名で保存したいときに便利です。
・ダウンロードしたファイルを特定ディレクトリに保存する(-P)
wget -P /var/tmp/downloads https://www.example.com/file.tar.gz
-P ディレクトリ は、保存先ディレクトリを指定するオプションです。
ログや一時ファイルを特定ディレクトリにまとめておきたい場合、/tmp や /var/tmp などへまとめてダウンロードできます。
・途中で中断されたダウンロードを再開する(-c)
wget -c https://www.example.com/bigfile.iso
-c(–continue)は、同名の部分ダウンロード済みファイルが存在する場合に、
ファイルの続きをダウンロードしようとするオプションです。
大きなファイルのダウンロードが途中で中断した場合に再開する用途でよく使います。
・ダウンロードの状況だけを静かめに表示する(-nv)
wget -nv https://www.example.com/file.tar.gz
-nv(–no-verbose)は、詳細なログは出さず、最低限の情報のみを表示するモードです。
cron から実行するなど、ログをシンプルに保ちたい場合に向いています。
・完全に静かにダウンロードする(-q)
wget -q https://www.example.com/file.tar.gz
-q(–quiet)は、エラー以外のメッセージをほとんど表示しない静音モードです。
スクリプトからの実行で、出力を他の処理に渡したいときなどに使います。
・帯域を制限してダウンロードする(–limit-rate)
wget --limit-rate=200k https://www.example.com/bigfile.iso
–limit-rate=速度 は、ダウンロード速度に上限をかけるオプションです。
この例では、200KB/秒を上限としてダウンロードします。
他のサービスへの影響を抑えつつ、大きなファイルを取得したいときに便利です。
・サイト階層をたどって再帰的にダウンロードする(-r)
wget -r https://www.example.com/docs/
-r(–recursive)は、リンクをたどって再帰的にダウンロードするオプションです。
指定ディレクトリ配下の HTML や画像などを一式取得したい場合に使いますが、
取得範囲が広くなりすぎないように、-l や -np などと組み合わせるのが安全です。
・親ディレクトリにさかのぼらずに再帰ダウンロードする(-r -np -l)
wget -r -np -l 3 https://www.example.com/docs/
-np(–no-parent)は、親ディレクトリ(/docs/ より上)にはさかのぼらない制御です。
-l(–level)は再帰の深さを指定します(この例では 3 階層まで)。
「特定ディレクトリ以下だけ」を控えめに取得したいときの組み合わせです。
・サイトをミラーリング用に取得する(–mirror)
wget --mirror -p -k https://www.example.com/
–mirror は、-r -N -l inf --no-remove-listing 相当のオプションをまとめて有効にし、
サイトのミラーリングに適した設定にします。
-p は表示に必要な画像なども含めて取得し、-k はローカル参照用にリンクを書き換えます。
ただし、サイト全体を取得する場合は相手先への負荷や利用規約に注意が必要です。
・ユーザエージェントを指定してダウンロードする(–user-agent)
wget --user-agent="Mozilla/5.0 (compatible; wget-test)" https://www.example.com/
–user-agent は、HTTP リクエスト時に送信する User-Agent を指定します。
一部のサイトでは、User-Agent によってアクセス制限が行われている場合があります。
・自己署名証明書などで TLS エラーを無視してダウンロードする(–no-check-certificate)
wget --no-check-certificate https://self-signed.example.com/file.tar.gz
–no-check-certificate は、証明書の検証に失敗した場合でもダウンロードを続行するオプションです。
検証環境などで自己署名証明書を使っている場合に一時的に使われますが、
セキュリティ的にはリスクがあるため、本番環境での常用は推奨されません。
・URL の存在だけをチェックする(–spider)
wget --spider https://www.example.com/healthcheck
–spider は、実際にはファイルを保存せず、URL の存在や応答だけを確認するオプションです。
監視用途や、リンクチェックの一環として利用できます。
・アプリケーションやライブラリの取得を自動化する
インストールスクリプトや構成管理の中で、特定バージョンのアーカイブをダウンロードする用途で、
wget -O や wget -P がよく使われます。
・ログやバックアップファイルの取得
他サーバ上に用意されたログやバックアップファイルを、wget で取得して解析用サーバに集約するパターンもあります。
大きなファイルの場合は -c によるレジュームや、--limit-rate による帯域制限と組み合わせると安全です。
・Web コンテンツの一時的なミラーリング
ドキュメントサイトや静的コンテンツを検証環境に移したい場合などに、
wget --mirror や -r -np -l を使ってローカルコピーを作成することがあります。
ただし、アクセス先のサーバ負荷や robots.txt・利用規約には十分注意する必要があります。
・ヘルスチェックや簡易監視
wget --spider と終了コードを利用して、簡易的なヘルスチェックを行うこともできます。
cron や監視ツールから呼び出し、応答コードに応じてアラートを出す、といった使い方です。
wget は「とりあえずファイルが欲しい」というときにとても便利なツールですが、
再帰的ダウンロードやミラーリングは相手先の許可がある範囲で慎重に使うようにしてください。
より高度な HTTP API 呼び出しやヘッダ制御が必要な場合は、curl との使い分けも検討すると良いです。
| short option | long option | description |
|---|---|---|
| -O | --output-document | ダウンロードした内容を指定したファイル名として保存する(標準では URL 末尾のファイル名が使われる) |
| -P | --directory-prefix | 保存先ディレクトリを指定する(デフォルトはカレントディレクトリ) |
| -c | --continue | 同名の部分ダウンロード済みファイルがある場合に途中からダウンロードを再開する |
| -q | --quiet | エラー以外のメッセージをほとんど表示しない静音モードで実行する |
| -nv | --no-verbose | 詳細なログを抑えて最低限の情報のみを表示する(スクリプトや cron からの実行に向く) |
| -v | --verbose | 詳細なメッセージを表示する(デフォルト)トラブルシュート時に挙動を確認しやすい |
| -r | --recursive | リンクをたどって再帰的にファイルをダウンロードする |
| -l | --level | 再帰ダウンロードの深さ(階層数)を指定する |
| -np | --no-parent | 親ディレクトリにはさかのぼらず指定ディレクトリ以下のみを対象とする |
| -m | --mirror | サイトミラーリング向けに -r -N -l inf --no-remove-listing などをまとめて有効にする |
| -N | --timestamping | ローカルに同名ファイルがある場合に更新日時を比較して新しいものだけをダウンロードする |
| -k | --convert-links | ダウンロードした HTML 内のリンクをローカル参照用に書き換える(オフライン閲覧向け) |
| -t | --tries | リトライ回数を指定する(デフォルトより多く/少なくしたい場合に使用) |
| --wait | 各リクエストの間に待ち時間(秒)を入れてアクセス間隔を空ける | |
| --limit-rate | ダウンロード速度の上限を指定する(例: 200k 100m など) | |
| -U | --user-agent | HTTP リクエスト時に送信する User-Agent を指定する |
| --user | ベーシック認証などで使用するユーザ名を指定する | |
| --password | ベーシック認証などで使用するパスワードを指定する(コマンドライン履歴に残るため注意が必要) | |
| --no-check-certificate | HTTPS 接続時に証明書の検証エラーを無視してダウンロードを続行する(検証環境などで一時的に使用) | |
| --spider | 実際にはダウンロードせず URL の存在や応答のみを確認する(監視やリンクチェック向け) | |
| -S | --server-response | サーバからの HTTP 応答ヘッダを表示する |
| -4 | --inet4-only | IPv4 のみを利用して接続する |
| -6 | --inet6-only | IPv6 のみを利用して接続する |
| -h | --help | wget コマンドの使い方(ヘルプ)を表示して終了する |
| -V | --version | wget コマンドのバージョン情報を表示して終了する |
ここでは、GNU Wget で一般的によく使われるオプションを TablePress の表としてまとめている想定です。
実際に利用できるオプションや挙動は、Wget のバージョンやビルドオプションによって異なる場合があるため、
本番環境で使用する前に man wget や wget --help で最新の仕様を確認してください。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
