この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:7
ページ更新者:atom
更新日時:2026-06-11 07:12:00

タイトル: wget http通信によるファイルダウンロード
SEOタイトル: wget コマンド完全ガイド — URL 指定/再帰/レジューム/認証/curl との違い

この記事の要点
  • wget URL で HTTP/HTTPS/FTP からファイルダウンロード。スクリプト向きの非対話 CLI
  • 保存名を変える -O ファイル名、レジューム -c、再帰ミラー -r --no-parent
  • 帯域制限 --limit-rate=1m、サイレント -q、Basic 認証 --user= --password=、カスタムヘッダ --header=
  • curl との違い: wget はファイル取得・ミラー専用、curl はHTTP リクエスト全般。両者は補完関係
  • Windows では PowerShell の Invoke-WebRequest がエイリアス wget として使える / Git Bash 同梱版もアリ

基本: URL を指定してダウンロード

wget は GNU プロジェクトのファイルダウンローダで、HTTP / HTTPS / FTP に対応。バックグラウンドでの大量ダウンロードや、サイト全体のミラーリングを行うのに使います。

# 基本: URL のファイルをカレントディレクトリに保存
wget https://example.com/foo.zip
# → ./foo.zip が保存される

# 保存名を変える
wget -O myfile.zip https://example.com/foo.zip

# 標準出力に書き出してパイプ
wget -O- https://example.com/archive.tar.gz | tar -xzf -

# ディレクトリ指定
wget -P /tmp/ https://example.com/foo.zip
# → /tmp/foo.zip

主要オプション一覧

オプション意味
-O FILE保存ファイル名指定wget -O a.zip URL
-P DIR保存ディレクトリ指定wget -P /tmp URL
-cレジューム(途中から再開)wget -c URL
-qquiet (出力抑制)cron 等で多用
-vverboseデバッグ用
-bバックグラウンド実行wget-log に出力
-r再帰ダウンロードミラー時必須
--no-parent親ディレクトリ取得しない再帰時の暴走防止
-Nタイムスタンプ比較(新しいときだけ)差分同期
--limit-rate=N帯域制限--limit-rate=1m
-t Nリトライ回数(既定 20)-t 0 で無限
--timeout=Nタイムアウト(秒)--timeout=30
--user-agent=UA 偽装サーバ判定回避用
--header=任意ヘッダ追加下記参照
--no-check-certificateSSL 検証無効(非推奨)自己署名証明書

レジューム: 巨大ファイルが途中で切れたとき

# 途中で切れた 5GB のファイル
wget https://example.com/big.iso
# Ctrl+C や回線断で中断
ls -la big.iso
# -rw-r--r-- 1 user user 2147483648 May 10 10:00 big.iso   ← 2GB で止まった

# -c で続きから
wget -c https://example.com/big.iso
# HTTP/1.1 206 Partial Content
# Length: 5368709120 (5.0G), 3221225472 (3.0G) remaining ...

# サーバが Range リクエスト未対応の場合は最初からやり直し

サイト丸ごとミラー(再帰ダウンロード)

# 配下を全部取得(深さ無制限)
wget -r --no-parent https://example.com/docs/

# よく使う安全な組み合わせ
wget --mirror --convert-links --adjust-extension --page-requisites \
     --no-parent https://example.com/docs/

# 各オプション:
#   --mirror           : -r -N -l inf --no-remove-listing と同等
#   --convert-links    : ローカルで開けるようリンク書き換え
#   --adjust-extension : .html を追加
#   --page-requisites  : 画像・CSS・JS も取得
#   -l 2               : 深さ 2 階層まで
#   -A "*.pdf"         : PDF だけ
#   -R "*.gif"         : GIF 除外

認証付きダウンロード

# Basic 認証
wget --user=admin --password=secret https://example.com/private/file.zip

# .netrc を使えばパスワードを履歴に残さない
cat > ~/.netrc <<EOF
machine example.com
login admin
password secret
EOF
chmod 600 ~/.netrc
wget https://example.com/private/file.zip

# Bearer トークン (REST API)
wget --header="Authorization: Bearer eyJhbGc..." \
     https://api.example.com/v1/data

# 任意のヘッダ複数指定
wget --header="X-Api-Key: abc123" \
     --header="Accept: application/json" \
     https://api.example.com/data

POST / Cookie / フォーム送信

# POST データ
wget --post-data=&quot;name=taro&amp;age=20&quot; https://example.com/api/save

# JSON POST
wget --header=&quot;Content-Type: application/json&quot; \
     --post-data='{&quot;name&quot;:&quot;taro&quot;}' \
     https://example.com/api/save

# Cookie を読み書き
wget --save-cookies cookies.txt --keep-session-cookies \
     --post-data=&quot;user=foo&amp;pass=bar&quot; \
     https://example.com/login

wget --load-cookies cookies.txt https://example.com/dashboard

curl との使い分け

用途推奨備考
ファイルを保存wgetデフォルトでファイル保存
サイト全体ミラーwgetcurl にはこの機能無し
レジュームwget / curl 両対応wget の -c が楽
REST API 叩くcurl豊富なメソッド/ヘッダ操作
HTTP デバッグcurl -vレスポンスヘッダ確認
標準出力に流すcurl(デフォルト)/ wget -O-パイプ用途
大量並列aria2c分割ダウンロード対応

スクリプタブルなバックアップ例

#!/bin/bash
# 毎日 cron で実行する DB バックアップ取得
set -euo pipefail

DATE=$(date +%Y%m%d)
DST=/backup/db
URL="https://backup.example.com/db/dump-${DATE}.sql.gz"

mkdir -p "$DST"

wget -q -c \
     --timeout=60 \
     --tries=3 \
     --header="X-Api-Key: ${BACKUP_KEY}" \
     -O "$DST/dump-${DATE}.sql.gz" \
     "$URL"

# 検証 (gzip が壊れていないか)
gzip -t "$DST/dump-${DATE}.sql.gz" || {
    echo "Broken gzip" >&2
    exit 1
}

# 古いものを削除
find "$DST" -name "dump-*.sql.gz" -mtime +30 -delete

Windows での wget

# 方法1: PowerShell 標準
Invoke-WebRequest -Uri &quot;https://example.com/foo.zip&quot; -OutFile &quot;foo.zip&quot;
# エイリアスで wget も使える(PowerShell 5+)
wget https://example.com/foo.zip -OutFile foo.zip

# 方法2: Git Bash / WSL 同梱の wget
wget https://example.com/foo.zip

# 方法3: 公式 wget for Windows
# https://eternallybored.org/misc/wget/ からダウンロード
# C:\Windows\System32 に置けば cmd / PowerShell から使える

# 方法4: scoop / chocolatey
scoop install wget
choco install wget

よくあるトラブル

症状原因対処
403 ForbiddenUA 判定でブロック--user-agent="Mozilla/5.0"
certificate verification failed自己署名 / 期限切れ正しい証明書を入れる / 緊急時 --no-check-certificate
ファイル名が変リダイレクト後の URL から付与--content-disposition or -O
HTML だけ取得されるJavaScript で動的生成wget では不可。Playwright/Selenium 等
すごく遅いサーバ側帯域 / プロキシhttp_proxy 環境変数確認

FAQ

Q: 並列ダウンロードしたい
A: wget 単体では困難。aria2c -x 8 URL が分割並列ダウンロード対応で高速です。

Q: 認証情報がプロセスリストに見えてしまう
A: --user= はコマンドライン引数なので ps で見えます。~/.netrc 経由を推奨。

Q: 再帰の暴走を防ぎたい
A: 必ず --no-parent-l N(深さ)を併用。--reject-regex で URL パターン除外も可能。