本連載では、Linuxの基本的なコマンドについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、指定したURLのファイルをダウンロードするための「wget」コマンドです。
「wget」コマンドは“ノンインタラクティブなダウンローダー”です。「wget URL」で指定したURLのファイルをダウンロードします。
wget [オプション] URL
wget -r [オプション] URL
(指定したURLからのリンクも含めて保存する(再帰ダウンロード))
※[ ]は省略可能な引数を示しています
wgetコマンドの主なオプションは次の通りです。
短いオプション | 長いオプション | 意味 |
---|---|---|
-b | --background | バックグラウンドで実行する。経過のメッセージは「-o」オプションで指定したログファイルへ、指定がない場合は「wget-log」に出力する |
-o ファイル名 | --output-file=ファイル名 | 経過のメッセージを全て指定したファイルに出力する |
-a ファイル名 | --append-output=ファイル名 | 「-o」オプションのように経過のメッセージを指定ファイルに出力するが、指定したファイルが既にある場合は上書きではなく追加する。ファイルがない場合は新規作成される |
-d | --debug | 動作内容を詳しく出力する |
-q | --quiet | 経過のメッセージを出力しない |
-v | --verbose | 経過のメッセージを出力する(デフォルト) |
-i ファイル名 | --input-file=ファイル名 | 指定したファイルからダウンロードするURLを読み込む |
-t 回数 | --tries=回数 | リトライ回数を指定する(デフォルトは20回) |
-T 秒数 | --timeout=秒数 | タイムアウトするまでの秒数を指定する(デフォルトは900秒) |
-w 秒数 | --wait=秒数 | リトライの待ち時間を指定する |
-nc | --no-clobber | ファイルを上書きしない |
-c | --continue | 途中までダウンロードされていたら続きをダウンロードする |
-N | --timestamping | ファイルのタイムスタンプをサーバ上のタイムスタンプに変更する |
--no-use-server-timestamps | ファイルのタイムスタンプを変更しない(「wget」で保存した時刻とする) | |
--spider | ファイルをダウンロードせず、URLの存在だけチェックする(“Web spider”として動作する)。例えば、ブックマークをチェックするなら「wget --spider --force-html -i bookmarks.html」のように指定する | |
--user=ユーザー名 | ダウンロードする際の「ユーザー名」を指定する | |
--password=パスワード | ダウンロードする際の「パスワード」を指定する | |
--ask-password | 接続毎にパスワードを入力する(プロンプトが表示される) | |
-p | --page-requisites | ローカル環境で表示するための必要なファイルも含めてダウンロードする |
-r | --recursive | 再帰ダウンロードを行う(URLで指定したファイルからのリンクもダウンロードする。デフォルトは5階層まで:実行例3を参照) |
-l 数 | --level=数 | 指定した回数分リンクをたどる(「-r」オプションは「-l 5」相当) |
-k | --convert-links | ダウンロード後に、ダウンロードファイル内のURLをローカル閲覧用に変換する |
-K | --backup-converted | ファイルを変換した際のバックアップを「.orig」という拡張子を付けて保存する |
-nd | --no-directories | 再帰ダウンロード時にディレクトリを作成しない |
-nH | --no-host-directories | 再帰ダウンロード時にホスト名のディレクトリを作成しない |
--max-redirect=回数 | URLリダイレクトの回数を指定する(デフォルトは20回) | |
-R 拡張子 | --reject 拡張子 | 指定した拡張子のファイルはダウンロードしない(複数ある場合は「-R jpg,png」のように「,」で区切って指定する) |
-A 拡張子 | --accept 拡張子 | 指定した拡張子のみ取得する(複数ある場合は「-A jpg,png」のように「,」で区切って指定する) |
-D リスト | --domains=リスト | ダウンロードするドメインのリスト(デフォルトでは別サイトへのリンクはダウンロードしないが、「-D」で指定したドメインはダウンロードの対象とする。複数ある場合は「,」で区切って指定する) |
--exclude-domains リスト | ダウンロードしないドメインのリスト | |
-np | --no-parent | 親ディレクトリは対象としない |
「wget URL」で、URLに指定したファイルをダウンロードします。例えば、「wget http://ftp.gnu.org/gnu/wget/wget-1.18.tar.gz」とすると、「wget-1.18.tar.gz」(wgetコマンドの最新版ソース)をダウンロードできます。
wget http://……/download.zip
$ wget http://ftp.gnu.org/gnu/wget/wget-1.18.tar.gz --2016-06-17 07:01:38-- http://ftp.gnu.org/gnu/wget/wget-1.18.tar.gz ftp.gnu.org (ftp.gnu.org) をDNSに問いあわせています... 208.118.235.20, 2001:4830:134:3::b ftp.gnu.org (ftp.gnu.org)|208.118.235.20|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 3865525 (3.7M) [application/x-gzip] `wget-1.18.tar.gz' に保存中 100%[======================================>] 3,865,525 1.34MB/s 時間 2.7s 2016-06-17 07:01:46 (1.34 MB/s) - `wget-1.18.tar.gz' へ保存完了 [3865525/3865525]
「wget URL」でHTMLファイルをダウンロードできますが、通常は、HTMLからはスタイルシートや画像などがリンクされています。「-p」オプションを付けると、そのHTMLの表示に使用しているファイル、例えばスタイルシートや画像などのファイルも併せてダウンロードできます。また「-k」オプションでリンクをローカル表示用に変換、「-K」オプションで変換元のファイルも「〜.orig」という名前で保存することができます。
wget -pkK http://……/index.html
$ wget -pkK https://www.gnu.org/software/wget/ --2016-06-17 07:29:16-- https://www.gnu.org/software/wget/ www.gnu.org (www.gnu.org) をDNSに問いあわせています... 208.118.235.148, 2001:4830:134:3::a www.gnu.org (www.gnu.org)|208.118.235.148|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 336137 (328K) [text/html] `www.gnu.org/software/wget/index.html' に保存中 100%[======================================>] 336,137 206KB/s 時間 1.6s 2016-06-17 07:29:24 (206 KB/s) - `www.gnu.org/software/wget/index.html' へ保存完了 [336137/336137] (略) 終了しました --2016-06-17 07:29:25-- 経過時間: 8.5s ダウンロード完了: 4 ファイル、334K バイトを 1.6s で取得 (210 KB/s) www.gnu.org/software/wget/index.html を変換しています... 945-4 www.gnu.org/style.css を変換しています... 0-1 www.gnu.org/software/gnulib/manual.css を変換しています... 1-0 3 個のファイルを 0.008 秒で変換しました。 (ダウンロードと変換ができた)
「-r」オプションを付けると、リンク先のファイルも含めてダウンロードすることができます。例えば、本連載の目次は「http://www.atmarkit.co.jp/ait/series/3065/」にありますが、「wget -r http://www.atmarkit.co.jp/ait/series/3065/」で目次からリンクされているページが全てダウンロードできます。
「-r」ではリンク先にもリンクがあればそれもダウンロード、そこにリンクがあれば……と“再帰的”にダウンロードします。デフォルトでは5つまでリンクをたどりますが、「-l」オプションでリンクをたどる回数を指定できます。
また、「http://……/sample01/index.html」を起点に「/sample01/」以下はたどるが、親ディレクトリにはさかのぼらなくてよいという場合は、「-np」オプションを使います。
たくさんのコンテンツがあり、アクセスが多いWebサイトの場合、画像は別のサーバに置かれていることがあります。「-H」オプションを付けると、外部のサーバ(ドメイン)も含めてファイルをダウンロードできます。
ただし、「-H」オプションと「-r」オプションを同時に指定すると、リンク集から他のサイトも取得してしまうなど、範囲が広がりすぎてしまうので、「-D」オプションで読み込むドメインを限定するとよいでしょう。
$ wget -r -l 1 -HkK -D image.atmarkit.co.jp,www.atmarkit.co.jp http://www.atmarkit.co.jp/ait/series/3065/ --2016-06-17 08:25:43-- http://www.atmarkit.co.jp/ait/series/3065/ www.atmarkit.co.jp (www.atmarkit.co.jp) をDNSに問いあわせています... 52.193.66.72 www.atmarkit.co.jp (www.atmarkit.co.jp)|52.193.66.72|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 特定できません [text/html] `www.atmarkit.co.jp/ait/series/3065/index.html' に保存中 [ <=> ] 70,288 --.-K/s 時間 0.04s 2016-06-17 08:25:48 (1.53 MB/s) - `www.atmarkit.co.jp/ait/series/3065/index.html' へ保存終了 [70288] (略) 経過時間: 16s ダウンロード完了: 102 ファイル、5.2M バイトを 2.1s で取得 (2.53 MB/s) www.atmarkit.co.jp/ait/articles/1602/26/news027.html を変換しています... 101-18 www.atmarkit.co.jp/ait/subtop/smart/index.html を変換しています... 57-9 www.atmarkit.co.jp/ait/subtop/features/security/iotseclog.html を変換しています... 59-7 (略) 57 個のファイルを 0.4 秒で変換しました。 $ ls -l (ダウンロード結果を確認) 合計 4 drwxrwxr-x. 4 study study 29 6月 17 08:25 image.atmarkit.co.jp drwxrwxr-x. 9 study study 4096 6月 17 08:25 www.atmarkit.co.jp (ドメイン名のディレクトリが2つ作成され、中にHTMLファイルやpngファイルが保存されている)
PC-9801N/PC-386MからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。
Copyright© 2016 ITmedia, Inc. All Rights Reserved.
@IT編集部では、編集記者を募集しています。ご興味のある方は奮ってご応募ください。