wgetコマンドでファイルをダウンロードする方法|再開やプロキシ設定も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > wgetコマンドでファイルをダウンロードする方法|再開やプロキシ設定も
「wgetでファイルをダウンロードしたいけど、途中で止まってしまった。最初からやり直すしかない?」
「プロキシ環境でwgetが通らない」「SSL証明書のエラーで先に進めない」
Linuxサーバーの構築や運用では、パッケージのソースコードやログ解析ツールなど、Webからファイルをダウンロードする場面が頻繁にあります。

この記事では、RHEL 9.4 / Ubuntu 24.04 LTSで動作確認した上で、wget コマンドの実践的な使い方を解説します。基本的なダウンロードから、中断の再開(-c)、再帰ダウンロード、ミラーリング、プロキシ設定、認証付きサーバー(Basic認証・Cookie認証)、複数URLの一括取得、cron運用、トラブルシュートまでを20年以上サーバーを運用してきた経験に基づいてカバーしました。よく比較される curl との使い分けにも触れていますので、現場で迷わず使えるようになるはずです。

この記事のポイント

・wget URL の1行で大半のダウンロードは完結する
・wget -c で中断したDLを途中から再開できる
・wget -r -np や --mirror でサイトを丸ごとミラーリングできる
・curlとの使い分けは「ファイル取得=wget/API叩き=curl」が基本


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

wgetとは?Webからファイルを取得するコマンド

wget(ダブリューゲット)は、HTTP・HTTPS・FTPプロトコルに対応したファイルダウンロード専用のコマンドです。URLを指定するだけでファイルを取得でき、対話的な操作が一切不要なため、シェルスクリプトやcronジョブからの自動ダウンロードに最適です。

# 基本書式 # wget [オプション] URL

wget がインストールされていない場合は、以下のコマンドでインストールしてください。最小構成のRHEL系サーバーや一部のコンテナイメージには入っていないことがあります。

# RHEL / Rocky Linux / AlmaLinux系 # sudo dnf install wget # Ubuntu / Debian系 # sudo apt install wget # バージョンの確認 # wget --version | head -1 # 実行結果の例 GNU Wget 1.21.3 built on linux-gnu.

GNU Wget 1.21系であれば、本記事のオプションはすべて利用できます。

基本的な使い方(ファイルをダウンロードする)

1. URLを指定してダウンロードする

最もシンプルな使い方は、URLをそのまま引数に渡す方法です。カレントディレクトリにファイルが保存されます。

# HTTPSでファイルをダウンロードする # wget https://example.com/files/sample.tar.gz # 実行結果の例 --2026-04-19 14:02:18-- https://example.com/files/sample.tar.gz Resolving example.com (example.com)... 93.184.216.34 Connecting to example.com (example.com)|93.184.216.34|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 12582912 (12M) [application/x-gzip] Saving to: 'sample.tar.gz' sample.tar.gz 100%[===================>] 12.00M 3.45MB/s in 3.5s 2026-04-19 14:02:22 (3.45 MB/s) - 'sample.tar.gz' saved [12582912/12582912]

進捗バー・転送速度・最終的な保存先まで、1コマンドで自己完結しているのが wget の良さです。ダウンロードしたtarballの展開手順は tarコマンドの実用例 にまとめてあります。

2. ファイル名を指定して保存する(-O)

ダウンロード元のファイル名が長い場合や、わかりやすい名前に変えたい場合は -O(Output document)オプションを使います。出力をパイプで他コマンドに流したい時にも使います。

# ファイル名を指定してダウンロードする # wget -O httpd-latest.tar.gz https://example.com/httpd-2.4.62.tar.gz # 標準出力に流して別コマンドへ渡す(- を指定) # wget -qO- https://example.com/install.sh | sudo bash

-O は大文字です。小文字の -o はログファイルの出力先を指定するオプションなので、間違えないようにしてください。

-qO- は進捗を抑制するquietモードと、ファイルではなく標準出力に書き出す指定の組み合わせです。インストールスクリプトをそのままbashに食わせる定番イディオムですが、信頼できないURLに対して使うのは絶対に避けてください。

3. 保存先ディレクトリを指定する(-P)

カレントディレクトリではなく、特定のディレクトリにダウンロードしたい場合は -P(Prefix)オプションを使います。

# /usr/local/src/ にダウンロードする # wget -P /usr/local/src/ https://example.com/httpd-2.4.62.tar.gz

保存先ディレクトリが存在しない場合は wget が自動で作成します。ソフトウェアのソースコードは /usr/local/src/ にダウンロードするのが慣例です。構築手順書にもこの形式で書かれていることが多いので、覚えておきましょう。

ダウンロードの中断と再開(-c オプション)

大容量のファイルをダウンロードしている途中で回線が切れた、あるいはSSHセッションが切断されたという経験はないでしょうか。wget-c(continue)オプションを使えば、途中から再開できます。

# 中断したダウンロードを途中から再開する # wget -c https://example.com/iso/rocky-9.4-x86_64-dvd.iso # 実行結果の例(途中から再開された場合) HTTP request sent, awaiting response... 206 Partial Content Length: 10737418240 (10G), 7516192768 (7.0G) remaining Saving to: 'rocky-9.4-x86_64-dvd.iso' rocky-9.4-x86_64-dvd.iso 31%[+++++========> ] 3.10G 8.20MB/s

-c を付けると、ローカルに既に存在するファイルのサイズを確認し、サーバー側のファイルとの差分だけをダウンロードします。HTTPステータスが「206 Partial Content」になっていれば、サーバー側がレンジリクエストに対応しており、続きから取得できています。数GBのISOファイルやカーネルソースをダウンロードする場合は、最初から -c を付けておくのが安全です。

※ サーバー側がレンジリクエスト(部分ダウンロード)に対応していない場合は、ステータス200で最初からダウンロードし直しになります。その場合は素直に時間を確保しましょう。

再帰ダウンロード(サイト全体を取得する)

4. Webサイトを丸ごとダウンロードする(-r)

-r(recursive)オプションを使うと、指定したURLからリンクをたどって再帰的にファイルをダウンロードできます。

# サイトを再帰的にダウンロードする(デフォルトは5階層まで) # wget -r https://www.example.com/docs/

デフォルトでは5階層までたどります。階層数を変更したい場合は -l(level)オプションで指定してください。

# 2階層までに制限してダウンロードする # wget -r -l 2 https://www.example.com/docs/ # 階層制限なし(サイト全体を取得する場合) # wget -r -l 0 https://www.example.com/docs/

注意: -r は大量のリクエストを送信するため、相手サーバーに負荷をかけます。--wait=秒数 でリクエスト間隔を空ける、-np(no-parent)で親ディレクトリへの遡りを防止するなど、マナーを守って使用してください。-np が効いていないと、https://example.com/のトップにまで遡って延々とDLしてしまうことがあります。

5. 再帰ダウンロードの実用的な組み合わせ

実務では -r を単体で使うことは少なく、以下のようにオプションを組み合わせるのが一般的です。

# 社内ドキュメントサイトをオフライン閲覧用に取得する # wget -r -l 3 -np -k -p --wait=1 https://docs.internal.example.com/

各オプションの意味は以下のとおりです。

-r:再帰的にダウンロードする
-l 3:3階層までに制限する
-np:親ディレクトリに遡らない
-k:ローカルで閲覧できるようにリンクを変換する
-p:ページ表示に必要な画像やCSSも取得する
--wait=1:リクエスト間隔を1秒空ける

6. オフライン閲覧用にサイトを丸ごとミラーリング(--mirror)

社内Wikiの退役、外部ドキュメントのオフライン保存など、サイト構造ごとそっくり取得したい場面で使います。

# サイト丸ごとミラー(CSS・画像・リンク変換まで含む) # wget --mirror --convert-links --adjust-extension \ # --page-requisites --no-parent \ # https://example.com/docs/

--mirror:-r -N -l inf --no-remove-listing と同等。再帰+タイムスタンプ比較
--convert-links:HTML内リンクをローカルファイルへの相対参照に書き換え
--adjust-extension:text/htmlに.htmlを補完
--page-requisites:CSS・画像・JSなど表示に必要なリソースも一緒に取得

7. 取得対象のファイル種別を絞る(-A/-R)

必要なファイル形式だけをピンポイントで取得したい場合は -A(accept)と -R(reject)でファイル拡張子のホワイトリスト・ブラックリストを指定できます。

# PDFとjpgだけ取得 # wget -r -l 2 -np -A pdf,jpg https://example.com/docs/ # 逆にCSSとJSは除外 # wget -r -l 2 -np -R css,js https://example.com/docs/

出力制御とバックグラウンド実行

8. 進捗表示を消す(-q)

-q(quiet)オプションを付けると、プログレスバーやメッセージが一切表示されなくなります。シェルスクリプトやcronジョブでwgetを使う場合に便利です。

# 進捗非表示でダウンロードする # wget -q https://example.com/archive.tar.gz # 進捗は非表示だが、サーバーの応答ヘッダーだけは表示する # wget -q --show-progress https://example.com/archive.tar.gz

9. バックグラウンドでダウンロードする(-b)

大容量ファイルのダウンロード中もターミナルを使い続けたい場合は、-b(background)オプションを使います。

# バックグラウンドでダウンロードを実行する # wget -b https://example.com/large-image.iso Continuing in background, pid 12345. Output will be written to 'wget-log'.

進捗は wget-log ファイルに記録されます。tail -f wget-log で進捗を確認できます。

10. 帯域制限をかける(--limit-rate)

本番サーバーで大容量ファイルをダウンロードする場合、回線を圧迫しないように帯域制限をかけることができます。

# ダウンロード速度を500KB/sに制限する # wget --limit-rate=500k https://example.com/large-image.iso # 2MB/sに制限する # wget --limit-rate=2m https://example.com/large-image.iso

業務時間中のDLは --limit-rate=1m 程度、夜間バッチでは無制限、といった使い分けが現実的です。本番環境のネットワーク帯域を使い切ってサービスに影響を出すのは絶対に避けなければなりません。大きなファイルをダウンロードする際は、--limit-rate を付ける習慣をつけましょう。

SSL証明書とセキュリティ

11. SSL証明書エラーを回避する(--no-check-certificate)

開発環境や検証環境では、自己署名証明書(オレオレ証明書)を使っているサーバーからファイルをダウンロードする場面があります。このとき、そのままwgetを実行すると以下のようなエラーが出ます。

ERROR: cannot verify example.com's certificate, issued by '/CN=example.com': Self-signed certificate encountered.

この場合は --no-check-certificate オプションを使います。

# SSL証明書の検証をスキップしてダウンロードする # wget --no-check-certificate https://dev-server.internal/package.tar.gz

※ 注意: このオプションは本番環境では使わないでください。証明書の検証をスキップすると、中間者攻撃(MITM)のリスクがあります。あくまで開発・検証環境に限定して使用しましょう。

プロキシ環境でのダウンロード

企業のネットワークでは、プロキシサーバー経由でしか外部にアクセスできない環境が多くあります。wget でプロキシを使用するには、環境変数を設定する方法と .wgetrc に記述する方法の2つがあります。

12. 環境変数でプロキシを設定する

一時的にプロキシを使いたい場合は、環境変数を設定してからwgetを実行します。

# HTTPプロキシを設定する # export http_proxy=http://proxy.example.com:8080 # export https_proxy=http://proxy.example.com:8080 # export no_proxy='localhost,127.0.0.1,.example.internal' # プロキシ経由でダウンロードする # wget https://example.com/archive.tar.gz

no_proxy に社内ドメインを並べておくと、社内サーバーへのアクセスだけプロキシを経由させない制御ができます。

13. .wgetrcでプロキシを恒久的に設定する

毎回環境変数を設定するのが手間な場合は、ホームディレクトリに .wgetrc ファイルを作成します。

# ~/.wgetrc に以下を記述する http_proxy = http://proxy.example.com:8080 https_proxy = http://proxy.example.com:8080 use_proxy = on

この設定をしておけば、wget を実行するたびに自動的にプロキシ経由でアクセスします。システム全体に適用する場合は /etc/wgetrc に記述してください。

14. 認証付きプロキシを使う

プロキシ自体に認証が必要な環境では、--proxy-user--proxy-password を指定します。

# 認証付きプロキシ経由でダウンロードする # wget --proxy-user=alice --proxy-password='SecretPass123' \ # https://example.com/files/sample.tar.gz

認証付きサーバーからダウンロードする

社内のNexus、プライベートなNginx配布サーバー、HTTP Basic認証で守られたファイルサーバー——現場では認証付きURLからのDLが頻繁に発生します。

15. ユーザー名とパスワードを指定する

Basic認証が設定されたサーバーからダウンロードする場合は、--user--password オプションを使います。

# Basic認証付きサーバーからダウンロードする # wget --user=admin --password=secret123 https://secure.example.com/file.tar.gz

ただし、この方法だとパスワードがコマンド履歴(~/.bash_history)に残り、ps aux で他ユーザーから見える可能性もあります。セキュリティ上の懸念がある場合は、--ask-password で対話的にパスワードを入力する方法を使ってください。

# パスワードを対話的に入力する # wget --user=admin --ask-password https://secure.example.com/file.tar.gz

FTPサーバーの場合は --ftp-user--ftp-password を使います。

# FTPサーバーから認証付きでダウンロードする # wget --ftp-user=ftpuser --ftp-password=ftppass ftp://ftp.example.com/pub/file.tar.gz

16. .netrcに認証情報をまとめて書いておく(推奨)

複数回使うURLや、スクリプトに組み込んで繰り返し使う場合は、~/.netrc に認証情報をまとめてパーミッション600で保護するのが定石です。

# ~/.netrc に以下を記述する machine repo.example.internal login alice password SecretPass123 # パーミッションを600にする(他人に読まれないようにする) # chmod 600 ~/.netrc # 認証情報を指定せずにアクセスできる # wget https://repo.example.internal/builds/app-1.2.3.rpm

.netrc はwget以外にもcurlやftpなど多くのコマンドが参照してくれる標準的な仕組みです。一度設定しておくと運用が楽になります。

17. Cookieを使ったセッション認証

ログインフォーム経由でしかアクセスできないURLは、ブラウザで取得したCookieを食わせるか、wget 自身でログインしてCookieを保存します。

# ブラウザの拡張機能でcookies.txtを書き出してから # wget --load-cookies cookies.txt \ # https://portal.example.com/private/report.csv # wget自身でログインしてCookieを保存する場合 # wget --save-cookies cookies.txt --keep-session-cookies \ # --post-data 'user=alice&pass=SecretPass123' \ # https://portal.example.com/login # 保存したCookieで認証済みページにアクセス # wget --load-cookies cookies.txt \ # https://portal.example.com/private/report.csv

社内ポータルのレポートCSVや、管理画面のエクスポート機能を定期取得する時に使える方法です。

応用・実務Tips

18. 複数URLを一括ダウンロードする(-i)

URLリストをテキストに書いておき、まとめて取得します。夜間バッチでミラーリポジトリを更新する時の定番パターンです。

# urls.txt に1行1URLで列挙 # cat urls.txt https://example.com/files/a.tar.gz https://example.com/files/b.tar.gz https://example.com/files/c.tar.gz # 一括ダウンロード(失敗してもスキップして続行、-cでレジューム対応) # wget -i urls.txt -c

19. cron運用ではログを必ず残す

定期ダウンロードをcronに仕込むときは、-N(タイムスタンプ比較で更新があるときのみ取得)と -a(ログファイルに追記)の組み合わせが王道です。

# /etc/cron.d/mirror-daily # 毎日3:00に最新版を取得、ログを残す 0 3 * * * root /usr/bin/wget -q -N -P /var/repo/mirror/ \ -a /var/log/wget-mirror.log \ https://example.com/repo/latest.tar.gz

-q:quietモード(cronメールを汚さない)
-N:タイムスタンプ比較で更新があれば取得
-a ログファイル:追記モードでログ記録(-o は上書きなので注意)

20年以上サーバーを運用してきた経験から言うと、現場で本当に効くのは -c でレジューム、-N で差分更新、-i でリスト一括処理の地味な3点セットです。これらをcronと組み合わせるだけで、ミラーリングや定期取得の自動化が一気に楽になります。

wgetとcurlの使い分け

wgetcurl、どちらを使えばいいのか?」という質問は非常に多いです。結論から言うと、用途によって使い分けるのが正解です。

比較項目 wget curl
得意な用途 ファイルのダウンロード API通信・データ送信
再帰ダウンロード 対応(-r オプション) 非対応
中断からの再開 対応(-c オプション) 対応(-C - オプション)
対応プロトコル数 HTTP/HTTPS/FTP 非常に多い(SCP, SMTP等も対応)
出力先のデフォルト ファイルに保存 標準出力(画面)に表示
POST/PUT等のHTTPメソッド 限定的 全メソッド対応
簡単にまとめると、以下のように使い分けてください。

ファイルをダウンロードしたい:wget が向いている
サイトを丸ごと取得したい:wget 一択(curlに再帰ダウンロード機能はない)
REST APIを叩きたい:curl が向いている
レスポンスヘッダーを確認したい:curl が向いている

迷った時は「ファイルを残したい→wget/レスポンスを処理したい→curl」で選ぶと外しません。基本コマンド全般の整理は Linux基本コマンドの解説 も参考にしてください。

トラブルシュート

「Unable to resolve host address」が出た時の対処法

wget でよく遭遇するのが名前解決系のエラーです。落ち着いて切り分けていきます。

# よくあるエラー # wget https://example.com/files/sample.tar.gz --2026-04-19 14:18:33-- https://example.com/files/sample.tar.gz Resolving example.com (example.com)... failed: Name or service not known. wget: unable to resolve host address 'example.com' # 切り分け手順 # 1) 名前解決ができているか # dig example.com +short # nslookup example.com # 2) 外向き通信が可能か # curl -I https://www.google.com # 3) /etc/resolv.conf が空でないか # cat /etc/resolv.conf

名前解決そのものが失敗している場合は、DNS設定を確認します。詳しい設定手順は digコマンドでDNSを調べる方法Linux DNS設定の基本 にまとめてあります。

「403 Forbidden」が返される場合

一部のWebサーバーは、wget のUser-Agentを検出してアクセスを拒否します。リファラチェックが原因のケースもあるため、--user-agent--referer を組み合わせて試してください。

# User-Agentを指定してダウンロードする # wget --user-agent="Mozilla/5.0 (X11; Linux x86_64)" https://example.com/file.tar.gz # リファラも合わせて指定する # wget --referer="https://example.com/" \ # --user-agent="Mozilla/5.0" \ # https://example.com/files/sample.tar.gz

ただし、利用規約で自動取得が禁止されているサイトでこれをやるのは契約違反です。あくまで正当な業務での話に限ります。

「404 Not Found」が出る

URLそのものが間違っている、または公開期間が終了しているケースです。ブラウザで同じURLを開いて確認するのが一番早い切り分けです。

タイムアウトで失敗する場合(-T オプション)

ネットワークが不安定な環境では、接続や応答がタイムアウトしてダウンロードが失敗することがあります。-T(timeout)オプションでタイムアウト値を調整し、--tries でリトライ回数を設定しましょう。

# タイムアウトを60秒に設定し、3回リトライする # wget -T 60 --tries=3 https://example.com/large-file.tar.gz # リトライ回数を無制限にする(ダウンロード完了まで何度でも再試行) # wget -T 60 --tries=0 -c https://example.com/large-file.tar.gz # 接続・読み取り・DNSを個別に指定 # wget --connect-timeout=30 --read-timeout=60 --dns-timeout=10 \ # -c https://example.com/large-file.tar.gz

-T は「接続タイムアウト」「読み取りタイムアウト」「DNSタイムアウト」の3つを一括で設定します。それぞれ個別に設定したい場合は --connect-timeout--read-timeout--dns-timeout を使ってください。

「Unable to establish SSL connection」が出る場合

古いバージョンの wget では、TLS 1.2以降にしか対応していないサーバーに接続できないことがあります。まず wget のバージョンと、相手サーバーの証明書情報を確認してください。

# wgetのバージョンを確認する # wget --version | head -1 # サーバーの証明書を直接確認する # openssl s_client -connect example.com:443 -servername example.com < /dev/null 2>/dev/null \ # | openssl x509 -noout -dates -subject # どうしても急ぐ時の応急処置(推奨はしない) # wget --no-check-certificate https://example.com/files/sample.tar.gz

バージョンが古い場合はOS標準のパッケージマネージャーでアップデートしてください。自己署名証明書が原因の場合は、先述の --no-check-certificate で対処できます。

本記事のまとめ

wget コマンドの基本から応用までを解説しました。以下にコマンド早見表をまとめます。
やりたいこと コマンド
URLを指定してダウンロード wget URL
ファイル名を指定して保存 wget -O ファイル名 URL
標準出力に流してパイプ処理 wget -qO- URL | sudo bash
保存先ディレクトリを指定 wget -P ディレクトリ URL
中断したダウンロードを再開 wget -c URL
再帰ダウンロード(階層指定) wget -r -l 階層数 URL
サイト丸ごとミラーリング wget --mirror --convert-links --no-parent URL
拡張子でホワイトリスト取得 wget -r -l 2 -np -A pdf,jpg URL
SSL証明書エラーを回避 wget --no-check-certificate URL
進捗を非表示にする wget -q URL
バックグラウンドで実行 wget -b URL
帯域制限をかける wget --limit-rate=500k URL
タイムアウトとリトライを指定 wget -T 60 --tries=3 URL
User-Agentを指定する wget --user-agent="文字列" URL
認証付きサーバーからダウンロード wget --user=ユーザー名 --password=パスワード URL
認証付きプロキシ経由でダウンロード wget --proxy-user=ユーザー名 --proxy-password=パスワード URL
URLリストを一括ダウンロード wget -i urls.txt -c
更新があれば取得(cron向け) wget -q -N -P /var/repo/ -a /var/log/wget.log URL

wgetだけでなく、サーバー構築に必要なコマンドを体系的に学びませんか?

wgetでのファイルダウンロードは、サーバー構築作業のほんの一部です。構築から運用まで、現場で本当に必要なスキルを身につけたいなら、断片的な情報を寄せ集めるより体系的に学ぶのが近道です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。