Wgetは、インターネットからファイルやWebページをダウンロードするためのコマンドラインのオープンソースユーティリティです。インターネットからデータを取得して端末に表示したり、ファイルに保存したりします。 wgetユーティリティは非対話型です。スクリプトを使用したり、ファイルのダウンロードをスケジュールしたりすることで、それを最大限に活用できます。
通常、FirefoxやChromiumなどのWebブラウザもファイルをダウンロードしますが、デフォルトでは、情報をグラフィカルウィンドウに表示し、ユーザーがファイルを操作する必要があります。または、他のLinuxシステムユーザーがcurlコマンドを使用してネットワークサーバーからデータを転送します。
この記事では、wgetコマンドを使用してインターネットからWebページとファイルをダウンロードする方法を説明しています。
Linuxへのwgetのインストール
Ubuntu / DebianベースのLinuxシステムにwgetをインストールするには:
$ apt-get install wget
Red Hat / CentOSにWgetをインストールするには:
$ yum install wget
Fedoraにwgetをインストールするには:
$ dnf install wget
wgetコマンドでファイルをダウンロードする
URLへの特定のリンクを提供することにより、wgetを使用してファイルをダウンロードできます。 URLのデフォルトがindex.htmlの場合、インデックスページがダウンロードされます。デフォルトでは、コンテンツは現在の作業ディレクトリにある同じファイル名のファイルにダウンロードされます。 wgetコマンドには、出力をlessまたはtailにパイプするためのいくつかのオプションもあります。
[#####@fedora ~]$ wget http://example.com | tail -n 6 --2021-11-09 12:06:02-- http://example.com/ Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946 Connecting to example.com (example.com)|93.184.216.34|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1256 (1.2K) [text/html] Saving to: ‘index.html.1’ index.html.1 100%[======================>] 1.23K --.-KB/s in 0s 2021-11-09 12:06:03 (49.7 MB/s) - ‘index.html.1’ saved [1256/1256]
ダウンロードしたデータを標準出力に送信する
-output-documentとダッシュ–文字を使用して、ダウンロードしたデータを標準出力に送信できます。

[#######@fedora ~]$ wget http://example.com --output-document - | head -n8 --2021-11-09 12:17:11-- http://example.com/ Resolving example.com (example.com)... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946 Connecting to example.com (example.com)|93.184.216.34|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 1256 (1.2K) [text/html] Saving to: ‘STDOUT’ <!doctype html> 0%[ ] 0 --.-KB/s <html> <head> <title>Example Domain</title> <meta charset="utf-8" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - 100%[======================>] 1.23K --.-KB/s in 0s 2021-11-09 12:17:12 (63.5 MB/s) - written to stdout [1256/1256]
別のファイル名でダウンロードを保存する
–output-documentオプションまたは-Oを使用して、ダウンロード用に別の出力ファイル名を指定できます。
$ wget http://fosslinux.com --output-document foo.html $ wget http://fosslinux.com -O foofoofoo.html
一連のファイルのダウンロード
ファイルの場所とファイル名のパターンがわかっている場合、Wgetは複数のファイルをダウンロードできます。 Bash構文を使用して、最初から最後までのファイル名のシーケンスを表す整数の範囲を指定できます。
$ wget http://fosslinux.com/filename_{1..7}.webp
複数のページとファイルをダウンロードする
ダウンロードするファイルを含むすべてのURLを指定することにより、wgetコマンドで複数のファイルをダウンロードできます。
$ wget URL1 URL2 URL3
部分的なダウンロードの再開
大きなファイルをダウンロードしている場合は、ダウンロードが中断される可能性があります。 Wgetは、部分的なダウンロードを続行する前に、ダウンロードが停止した場所を判別できます。 Fedora35LinuxディストリビューションISOのような大きなファイルをダウンロードする場合に便利です。ダウンロードを続行するには、–continueまたは-cオプションを使用します。
$ wget --continue https://fosslinux.com/foss-linux-distro.iso
wgetコマンドを使用した再帰的ダウンロードの管理
–recursiveまたは-rオプションを使用して、wgetコマンドで再帰的ダウンロードをオンにします。 wget再帰モードは、提供されたサイトURLをクロールし、デフォルトまたは指定された最大深度レベルまですべてのリンクをたどります。
$ wget -r fosslinux.com
デフォルトでは、最大再帰ダウンロード深度は5です。ただし、wgetには、最大再帰深度を指定するための-lオプションがあります。
$ wget -r -l 11 fosslinux.com
「-l0」オプションを使用して、無限再帰を指定できます。たとえば、最大深度をゼロ(-l 0)に設定すると、wgetはWebサイト上のすべてのファイルをダウンロードします。
ローカル表示用のリンクの変換
–convert-linksは、リンクをローカル表示に適したものに変換するもう1つの重要なwgetオプションです。
$ wget -r l 3 --convert-links fosslinux.com
特定のファイルタイプのダウンロード
wgetコマンドで-Aオプションを使用すると、再帰的なダウンロード中に特定のファイルタイプをダウンロードできます。たとえば、次のwgetコマンドを使用して、WebサイトからPDFファイルをダウンロードします。
$ wget -A '*.pdf -r fosslinux.com
再帰的な最大取得深度レベルは、デフォルトで5に制限されていることに注意してください。
FTPサーバーからのファイルのダウンロード
FTPサーバーからファイルをダウンロードする必要がある場合は、wgetコマンドが便利です。
$ wget --ftp-user=username --ftp-password=password ftp://192.168.1.13/foofoo.pdf
上記の例では、wgetは192.168.1.10にあるFTPサーバーから「foofoo.pdf」をダウンロードします。
FTPプロトコルで-rrecursiveオプションを使用して、FTPファイルを再帰的にダウンロードすることもできます。
$ wget -r --ftp-user=username --ftp-password=pass ftp://192.168.1.13/
wgetコマンドで最大ダウンロードサイズを設定する
–quotaフラグオプションを使用して、ファイルの再帰的な取得中に最大ダウンロードサイズを設定できます。ダウンロードサイズは、バイト(デフォルト)、キロバイト(kサフィックス)、またはメガバイト(mサフィックス)で指定できます。制限を超えると、ダウンロードプロセスは中止されます。
$ wget -r --quota=1024m fosslinux.com
ダウンロードクォータは、単一のファイルのダウンロードには影響しないことに注意してください。
wgetコマンドでダウンロード速度制限を設定する
wget –limit-rateフラグオプションを使用して、ファイルをダウンロードするときのダウンロード速度を制限することもできます。たとえば、次のコマンドは「foofoo.tar.gz」ファイルをダウンロードし、ダウンロード速度を256KB/秒に制限します。
$ wget --limit-rate=256k URL/ foofoo.tar.gz
必要なダウンロードレートは、バイト(サフィックスなし)、キロバイト(kサフィックスを使用)、またはメガバイト(mサフィックスを使用)で表すことができることに注意してください。
wgetコマンドを使用したWebサイトのミラーリング
–mirrorオプションを使用すると、ディレクトリ構造を含むサイト全体をダウンロードまたはミラーリングできます。サイトのミラーリングは、最大深度レベルのない再帰ダウンロードに似ています。 –recursive –level inf –timestamping –no-remove-listingオプションを使用することもできます。これは、無限に再帰的であることを意味します。
wgetを使用して、–no-cookies –page-requisites –convert-linksオプションを使用してサイトをアーカイブすることもできます。完全なページをダウンロードし、サイトのコピーが自己完結型であり、元のサイトと類似していることを確認します。
$ wget --mirror --convert-links fosslinux.com $ wget -recursive --level inf --timestamping –no-remove-listing
特にウェブサイトが古い場合、サイトをアーカイブすると大量のデータがダウンロードされることに注意してください。
テキストファイルからのURLの読み取り
wgetコマンドは、-iオプションを使用して、テキストファイルから複数のURLを読み取ることができます。入力テキストファイルには複数のURLを含めることができますが、各URLは新しい行で開始する必要があります。
$ wget -i URLS.txt
短縮URLの拡張
wget –max-redirectオプションを使用すると、アクセスする前に短縮URLを確認できます。短縮URLは、印刷メディアや文字数制限のあるソーシャルネットワークに不可欠です。さらに、短縮URLはデフォルトで宛先が隠されているため、疑わしい場合もあります。
注:–headオプションと–locationオプションを組み合わせてHTTPヘッダーを表示し、最終的なURL宛先を解明することをお勧めします。リソース全体をロードしなくても、短縮URLを確認できます。
[######@fedora ~]$ wget --max-redirect 0 https://t.co/GVr5v9554B?amp=1 --2021-11-10 16:22:08-- https://t.co/GVr5v9554B?amp=1 Resolving t.co (t.co)... 104.244.42.133, 104.244.42.69, 104.244.42.5, ... Connecting to t.co (t.co)|104.244.42.133|:443... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://bit.ly/ [following] 0 redirections exceeded.
注:目的の宛先は、場所で始まる出力行に表示されます。
HTMLヘッダーの変更
HTTPヘッダー情報は、データ交換中にコンピューターが通信するために送信するパケットに埋め込まれたメタデータ情報の1つです。たとえば、Webサイトにアクセスするたびに、ブラウザはHTTPリクエストヘッダーを送信します。 –debugオプションを使用して、リクエストごとにwgetがブラウザに送信するヘッダー情報を表示できます。
[#####@fedora ~]$ wget --debug fosslinux.com DEBUG output created by Wget 1.21.1 on linux-gnu. ---request begin--- GET / HTTP/1.1 User-Agent: Wget/1.21.1 Accept: */* Accept-Encoding: identity Host: fosslinux.com Connection: Keep-Alive ---request end--- HTTP request sent, awaiting response... ---response begin--->
wgetコマンドを使用した応答ヘッダーの表示
–debugオプションを使用して、戻り応答の応答ヘッダー情報を表示できます。
[#####@fedora ~]$ wget --debug fosslinux.com ….. ---request end--- HTTP request sent, awaiting response... ---response begin--- HTTP/1.1 200 OK Server: nginx Date: Wed, 10 Nov 2021 13:36:29 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding X-Cache: HIT ---response end--- 200 OK
301応答コードへの応答
HTTP応答ステータスコードは、Web管理者にとって不可欠です。通常、301 HTTP応答ステータスコードは、URLが永続的に別の場所に移動されたことを意味します。デフォルトでは、wgetはリダイレクトに従います。ただし、–max-redirectオプションを使用して、301応答に遭遇したときにwgetが何をするかを判別できます。たとえば、0に設定して、リダイレクトを行わないようにwgetに指示できます。
[######@fedora ~]$ wget --max-redirect 0 https://fosslinux.com --2021-11-10 16:55:54-- https://fosslinux.com/ Resolving fosslinux.com (fosslinux.com)... 67.205.134.74, 2604:a880:400:d0::4bfe:a001 Connecting to fosslinux.com (fosslinux.com)|67.205.134.74|:443... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: https://www.fosslinux.com/ [following] 0 redirections exceeded.
wgetの冗長な出力をログファイルに保存する
デフォルトでは、wgetは詳細な出力をLinuxターミナルに表示します。ただし、-oオプションを使用して、すべての出力メッセージを指定されたログファイルに記録できます。
$ wget -o foofoo_log.txt fosslinux.com
上記のwgetコマンドは、詳細な出力を「foofoo_log.txt」ファイルに保存します。
Webスパイダーとしてwgetコマンドを実行する
–spiderオプションを使用して、wgetコマンドをWebスパイダーとして機能させることができます。基本的に、Webページはダウンロードされませんが、そこにあることを確認するだけです。さらに、壊れたURLがあれば報告されます。
$ wget -r --spider fosslinux.com
バックグラウンドでwgetコマンドを実行する
-b / –backgroundオプションを使用して、バックグラウンドでwgetプロセスを実行できます。完了するまでに時間がかかる大きなファイルをダウンロードする場合は、これが不可欠です。
$ wget -b fosslinux.com/latest.tar.gz
デフォルトでは、wgetプロセスの出力は「wget-log」にリダイレクトされます。ただし、-oオプションを使用して別のログファイルを指定できます。
wgetプロセスを監視するには、tailコマンドを使用します。
$ tail -f wget-log
デバッグモードでwgetを実行する
wgetをデバッグモードで実行すると、出力にはwgetリクエストヘッダーやレスポンスヘッダーなどのリモートサーバー情報が含まれます。リクエストヘッダーとレスポンスヘッダーは、システム管理者とWeb開発者にとって不可欠です。
$ wget --debug fosslinux.com
ユーザーエージェントのwgetコマンドの変更
–user-agentオプションを使用して、デフォルトのユーザーエージェントを変更できます。たとえば、「Mozilla /4.0」をwgetUser-Agentとして使用して、次のコマンドでfosslinux.comを取得できます。
$ wget --user-agent='Mozilla/4.0' fosslinux.com
wgetの公式マニュアルページからwgetのヒントとコツを学びましょう。
まとめ
Linuxのwgetコマンドは、ブラウザーを使用せずにインターネットからデータをプルおよびダウンロードするための効率的な方法を提供します。用途の広いcurlコマンドと同様に、wgetは、大きなファイルのダウンロード、非対話型のダウンロード、複数のファイルのダウンロードなど、複雑なダウンロードシナリオを処理できます。