2026年7月8日
2026年7月8日
wgetとcurlでファイルをダウンロードする方法
はじめに
wgetとcurlはどちらもHTTP/HTTPS/FTPでファイルを取得するLinuxの定番コマンドです。一見似ていますが、wgetは「ファイルダウンロードに特化」、curlは「あらゆるプロトコルでデータ転送する万能ツール」という違いがあります。
スクリプトでパッケージを取得する、APIを叩く、サイトをミラーするなど用途別に使い分けると効率的です。本記事では両者の使い方と使い分けの判断基準を解説します。
症状・背景
wget・curl が必要になる主な場面:
- パッケージや設定ファイルをサーバーにダウンロードしたい
- APIを叩いてレスポンスをjqなどで処理したい
- バックアップファイルを別サーバーからダウンロードしたい
- 監視・ヘルスチェック用にWebサイトのステータスコードを取得したい
手順・設定方法
ステップ1: wget の基本
# シンプルなダウンロード(URLのファイル名で保存)
wget https://example.com/file.tar.gz
# 保存名を指定(-O)
wget -O myfile.zip https://example.com/archive.zip
# 出力ディレクトリを指定(-P)
wget -P /tmp/ https://example.com/file.zip
# 再開ダウンロード(-c: continue)
wget -c https://example.com/big.iso
# 静かなモード(-q)、進捗のみ(--show-progress)
wget -q --show-progress https://example.com/file.zip
ステップ2: curl の基本
# 標準出力に表示(デフォルト)
curl https://example.com/
# ファイルに保存(-O: URLの名前で、-o: 名前指定)
curl -O https://example.com/file.tar.gz
curl -o myfile.zip https://example.com/archive.zip
# リダイレクトを追跡(-L)
curl -L https://bit.ly/short-url
# プログレスバー表示(-#)と静音モード(-s)
curl -# -O https://example.com/file.zip
curl -sS https://example.com/api # -sS: エラーは表示
ステップ3: API呼び出し・ヘッダー操作
# HTTPヘッダーのみ取得(-I: HEAD)
curl -I https://example.com/
# 認証ヘッダー付きでGET
curl -H "Authorization: Bearer TOKEN" https://api.example.com/users
# POSTリクエスト(JSON送信)
curl -X POST https://api.example.com/login \
-H "Content-Type: application/json" \
-d '{"user":"alice","pass":"secret"}'
# ファイルアップロード(multipart)
curl -X POST https://api.example.com/upload \
-F "file=@/path/to/local.zip"
# レスポンスヘッダーとステータスコードを取得
curl -w "HTTP %{http_code}\n" -o /dev/null -s https://example.com/
ステップ4: 実践テクニック
# wget でサイトをミラーリング
wget --mirror --convert-links --page-requisites https://example.com/
# 認証付きFTPダウンロード
wget --user=alice --password=secret ftp://server/file.tar
# curl で複数URLを順次ダウンロード
curl -O https://example.com/file[1-5].zip
# プロキシ経由でアクセス
curl -x http://proxy:8080 https://example.com/
# タイムアウト設定(接続5秒、合計30秒)
curl --connect-timeout 5 --max-time 30 https://slow.example.com/
# 監視用:HTTPステータスのみ取得
curl -o /dev/null -s -w "%{http_code}\n" https://example.com/health
注意事項
- パスワードを
-u user:passで渡すと履歴に残るため、.netrcや環境変数を使うのが安全 - HTTPS証明書の検証無効化(
-k/--no-check-certificate)は緊急時のみ。本番では絶対に使わない - 大きなファイルは
-c(wget)や-C -(curl)で再開ダウンロードを活用 - スクリプト内では
set -eと組み合わせ、curl --failを付けてエラー時に終了コードを返す
まとめ
1. 使い分け: ファイル取得は wget、API操作・スクリプト連携は curl
2. 保存先: wget は -O / -P、curl は -o / -O で制御
3. HTTP操作: curl は -X でメソッド、-H でヘッダー、-d でデータ送信
4. 再開: 大容量ファイルは wget -c または curl -C - で中断後も再開可能
5. 監視: curl -w "%{http_code}" でステータスコードのみ取得し監視に活用
関連記事: