Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxのwgetコマンド完全ガイド!基本構文から実用例まで徹底解説

当サイトの「Magic Mirror」チュートリアルをご覧になった方なら、ファイルのダウンロードに wget コマンドが使われているのを目にしたことがあるでしょう。

この記事では、Webからファイルをダウンロード(取得)するためのコマンドラインツール wget の使い方を詳しく解説します。wgetは HTTP・HTTPS・FTP・FTPS のいずれのプロトコルにも対応しています。

Linuxのシェルからインターネット上のファイルをダウンロードしたり、Bashスクリプトから呼び出したりできるのがwgetの魅力です。シンプルながら多用途で、一度起動すればユーザーの操作なしで動作するため、バックグラウンドでの実行にも最適です。

wgetの基本構文

wget [OPTIONS]... [ URLS ]...

各要素の意味は以下の通りです。

  • OPTIONS:下記の表にあるオプションを半角スペース区切りで指定します
  • URLS:ダウンロード対象のURLを半角スペース区切りで指定します

wgetの主なオプション一覧

よく使われるwgetのオプションを公式ドキュメントより抜粋して紹介します。

オプション 説明
-o logfile すべてのメッセージをlogfileに記録します。通常は標準エラー出力に表示されるメッセージが対象です。
-a logfile logfileに追記します。-oと同様ですが、既存のログファイルを上書きせず追記する点が異なります。ファイルが存在しない場合は新規作成されます。
-q Wgetの出力をオフにします(サイレントモード)。
-i file ローカルまたは外部のfileからURLを読み込みます。このオプション使用時は、コマンドラインでURLを指定する必要がありません。
-t number リトライ回数をnumberに設定します。
-c 途中までダウンロード済みのファイルの続きから取得を再開します。
-T seconds ネットワークタイムアウトをseconds秒に設定します。
-w seconds 各ダウンロードの間に指定したseconds秒だけ待機します。
--user=user HTTPまたはFTP認証のユーザー名を設定します。
--password=password HTTPまたはFTP認証のパスワードを設定します。
--post-data=string GETの代わりにPOSTリクエストを送信し、データを渡します。stringは「key1=value1&key2=value2」の形式で指定します。
-r 再帰的な取得(リンク先も含めたダウンロード)を有効にします。
-l depth 再帰の最大深度をdepthに指定します。デフォルトの最大深度は5です。
-m ミラーリングに適したオプションを有効にします。再帰とタイムスタンプ取得がオンになり、無限の再帰深度が設定され、FTPディレクトリの一覧も保持されます。
-p 指定したHTMLページを正しく表示するために必要なファイル(インライン画像、音声、参照されているスタイルシートなど)をすべてダウンロードします。

wgetの実用例

HTTPSサーバーからファイルをダウンロードする

単一ファイルをダウンロードする、最も基本的な使い方です。

wget https://www.example.com/file.zip

中断したダウンロードを再開する

ダウンロードが途中で中断された場合は、-c オプションで続きから再開できます。

wget -c https://www.example.com/file.zip

URLリストからダウンロードし、ログに追記する

ダウンロードしたいURLの一覧が書かれたテキストファイルがある場合、そのままwgetに渡すことができます。結果のログも残しておけば、後から確認できて便利です。

wget -a log.txt -i url-list.txt

なお、-o を使うとログファイルを出力できますが、こちらは既存のログファイルがある場合に上書きされる点に注意してください。

5回リトライして、画面出力なしでダウンロードする

失敗時に再試行しつつ、ターミナルへの進捗表示を行わない例です。

wget -t 5 -q https://www.example.com/file.zip

各ダウンロード間に6秒待機し、タイムアウトを12秒に設定する

ダウンロード間に待機時間を設けることでサーバーへの負荷を軽減できます。また、サーバーが12秒以内に応答しない場合は処理を中止します。

wget -w 6 -T 12 -i url-list.txt

ユーザー名とパスワードが必要なFTPSサーバーからダウンロードする

認証情報(ユーザー名 bob、パスワード boat)を指定してFTPSサーバーからダウンロードする例です。

wget --user=bob --password=boat ftps://ftp.example.com/file.zip

POSTリクエストでファイルをダウンロードする

デフォルトのGETリクエストの代わりにHTTP POSTリクエストを送り、データを送信します。--post-data には空文字列を渡すことも可能です。

wget --post-data="postcode=2000&country=Australia" https://www.example.com/file.zip

この例では、「postcode」と「country」という2つのPOSTデータを送信しています。

なお、POSTリクエストを多用する場合は、cURLの方が柔軟に対応できることもあります。

FTPでディレクトリを再帰的にダウンロードする(深さ制限あり)

再帰的にダウンロードすると、フォルダ内のコンテンツだけでなく、その中にあるサブフォルダの中身も取得されます。この例では深さ制限を3に設定しているため、3階層より深くネストされたフォルダはダウンロードされません。

wget -r -l 3 ftps://ftp.example.com/path/to/folder

FTPでディレクトリを全内容ごと丸ごとダウンロードする

-m オプションを使えば、フォルダ内のすべてのコンテンツを含めて完全にミラーリングできます。

wget -m ftps://ftp.example.com/path/to/folder

Webページ全体を複製する

画像・スタイル・スクリプトを含むWebページ一式を取得したい場合は、-p オプションを使用します。

wget -p https://www.example.com/page.html

ただし、結果はページによってまちまちです。近年のモダンなWebページの中には、元の環境から切り離すとうまく動作しないものも多い点に留意してください。


  1. Linuxでソフトウェアを安全にダウンロードするための5つの方法

    「Linuxにはウイルスが存在しない」というのはよくある誤解です。実際には、Linuxにもウイルスは存在します。プログラムファイルを一つずつ調べて感染ファイルを見つけることは可能ですが、Linuxシステムが侵害されたことに気づくまでに数ヶ月かかることもあります。信頼とは繊細なもので、安易に与えるべきではありません。インターネット上に公開されているからといって、それが安全だとは限りません。OSと自分自身を守るためには、いくつかの対策を講じる必要があります。油断によるセキュリティリスクは、情報漏洩やウイルス感染、さらには許可されていないユーザーによるLinuxマシンへの不正アクセスまで多岐にわたり

  2. 【findコマンド徹底解説】Linuxでファイルやディレクトリを柔軟に検索する方法

    Linuxのfindコマンドは、Linuxシステムにおいて最も重要かつ便利なコマンドの一つです。その名の通り、自分で設定したさまざまな条件や変数に基づいて、Linuxマシン上のファイルを検索できます。パーミッション、ユーザー、グループ、ファイルタイプ、日付、サイズなど、多彩な条件を組み合わせて目的のファイルを見つけられるのが特徴です。この記事では、findコマンドを使ってLinux上でファイルを検索する方法を詳しく解説します。 findコマンドはほとんどのLinuxディストリビューションにデフォルトで搭載されているため、追加でパッケージをインストールする必要はありません。 カレントディレクト