wget ユーティリティは、インターネットからファイルをダウンロードするための最良のオプションです。 wget は、大きなファイルのダウンロード、再帰的なダウンロード、非対話型のダウンロード、複数のファイルのダウンロードなど、複雑なダウンロードの状況をほぼすべて処理できます。
この記事では、 wget の使用方法を確認します。 15 のすばらしい wget の例を使用して、さまざまなダウンロード シナリオに対応します。
1. wget で単一ファイルをダウンロード
次の例では、インターネットから 1 つのファイルをダウンロードし、現在のディレクトリに保存します。
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
ダウンロード中は、進行状況バーに次の情報が表示されます:
- ダウンロード完了の割合 (例:以下に示す 31%)
- これまでにダウンロードされた総バイト数 (例:以下に示す 1,213,592 バイト)
- 現在のダウンロード速度 (例:以下に示すように 68.2K/秒)
- ダウンロードの残り時間 (例:以下に示す eta 34 秒)
ダウンロード中:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2.1' 31% [=================> 1,213,592 68.2K/s eta 34s
ダウンロード完了:
$ wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Saving to: `strx25-0.9.2.1.tar.bz2' 100%[======================>] 3,852,374 76.8K/s in 55s 2009-09-25 11:15:30 (68.7 KB/s) - `strx25-0.9.2.1.tar.bz2' saved [3852374/3852374]
2. wget -O を使用して別のファイル名でダウンロードして保存する
デフォルトでは、wget は最後のスラッシュの後の最後の単語からファイル名を選択しますが、これは常に適切であるとは限りません。
不正解: 次の例では、download_script.php?src_id=7701 という名前のファイルをダウンロードして保存します。
$ wget http://www.vim.org/scripts/download_script.php?src_id=7701
ダウンロードしたファイルは zip 形式ですが、以下のようにファイルに保存されます。
$ ls download_script.php?src_id=7701
正解: この問題を修正するには、-O オプションを使用して出力ファイル名を次のように指定します。
$ wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
3. wget –limit-rate を使用してダウンロード速度/ダウンロード速度を指定
wget の実行中、デフォルトでは可能な帯域幅をすべて占有しようとします。これは、本番サーバーで巨大なファイルをダウンロードしている場合には受け入れられない可能性があります。そのため、以下に示すように –limit-rate を使用してダウンロード速度を制限することができます。
次の例では、ダウンロード速度が 200k に制限されています
$ wget --limit-rate=200k http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
4. wget -c を使用して不完全なダウンロードを続行
以下に示すように、wget -c オプションを使用して、途中で停止したダウンロードを再開します。
$ wget -c http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
これは、途中で中断された非常に大きなファイルのダウンロードを開始した場合に非常に役立ちます。ダウンロード全体を再度開始する代わりに、オプション -c を使用して中断された場所からダウンロードを開始できます
注: ダウンロードが途中で停止した場合、オプション -c なしで再度ダウンロードを再開すると、以前の名前のファイルが既に存在するため、wget は自動的にファイル名に .1 を追加します。 .1 のファイルが既に存在する場合、最後に .2 のファイルをダウンロードします。
5. wget -b を使用してバックグラウンドでダウンロード
大量のダウンロードの場合は、以下に示すように wget オプション -b を使用してダウンロードをバックグラウンドに置きます。
$ wget -b http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 Continuing in background, pid 1984. Output will be written to `wget-log'.
ダウンロードが開始され、シェル プロンプトが表示されます。以下に示すように、tail -f を使用してダウンロードのステータスをいつでも確認できます。
$ tail -f wget-log Saving to: `strx25-0.9.2.1.tar.bz2.4' 0K .......... .......... .......... .......... .......... 1% 65.5K 57s 50K .......... .......... .......... .......... .......... 2% 85.9K 49s 100K .......... .......... .......... .......... .......... 3% 83.3K 47s 150K .......... .......... .......... .......... .......... 5% 86.6K 45s 200K .......... .......... .......... .......... .......... 6% 33.9K 56s 250K .......... .......... .......... .......... .......... 7% 182M 46s 300K .......... .......... .......... .......... .......... 9% 57.9K 47s
また、tail コマンドを効果的に使用して複数のファイルを表示する方法については、以前のマルチテールの記事を必ず確認してください。
6.ユーザー エージェントをマスクし、wget –user-agent を使用してブラウザのように wget を表示
一部の Web サイトでは、ユーザー エージェントがブラウザーではないことを識別して、そのページのダウンロードを禁止できます。そのため、以下に示すように、–user-agent オプションを使用してユーザー エージェントをマスクし、ブラウザのように wget を表示できます。
$ wget --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" URL-TO-DOWNLOAD
7. wget –spider を使用してダウンロード URL をテストする
スケジュールされたダウンロードを行う場合は、スケジュールされた時間にダウンロードが正常に行われるかどうかを確認する必要があります。これを行うには、スケジュールから行を正確にコピーし、チェックする –spider オプションを追加します。
$ wget --spider DOWNLOAD-URL
指定された URL が正しい場合、
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] Remote file exists and could contain further links, but recursion is disabled -- not retrieving.
これにより、スケジュールされた時間にダウンロードが成功することが保証されます。ただし、間違った URL を指定すると、次のエラーが発生します。
$ wget --spider download-url Spider mode enabled. Check if remote file exists. HTTP request sent, awaiting response... 404 Not Found Remote file does not exist -- broken link!!!
スパイダー オプションは、次のシナリオで使用できます:
- ダウンロードをスケジュールする前に確認してください。
- 一定の間隔でウェブサイトが利用可能かどうかを監視する
- ブックマークからページのリストを確認し、まだ存在するページを見つけます。
8. wget –tries を使用して再試行の合計回数を増やす
インターネット接続に問題があり、ダウンロード ファイルが大きい場合、ダウンロードに失敗する可能性があります。デフォルトでは、wget はダウンロードを成功させるために 20 回再試行します。
必要に応じて、以下に示すように –tries オプションを使用して再試行回数を増やすことができます。
$ wget --tries=75 DOWNLOAD-URL
9. Wget -i を使用して複数のファイル / URL をダウンロード
まず、すべてのダウンロード ファイルまたは URL を次のテキスト ファイルに保存します。
$ cat > download-file-list.txt URL1 URL2 URL3 URL4
次に、以下に示すように -i オプションを使用して wget の引数として download-file-list.txt を指定します。
$ wget -i download-file-list.txt
10. wget –mirror を使用して完全な Web サイトをダウンロードする
以下は、Web サイト全体をダウンロードしてローカルで表示できるようにするときに実行するコマンド ラインです。
$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
- –mirror :ミラーリングに適したオプションをオンにします。
- -p :特定の HTML ページを適切に表示するために必要なすべてのファイルをダウンロードします。
- –convert-links :ダウンロード後、ドキュメント内のリンクをローカル表示用に変換します。
- -P ./LOCAL-DIR :すべてのファイルとディレクトリを指定したディレクトリに保存します。
11. wget –reject を使用してダウンロード中に特定のファイル タイプを拒否する
役に立つ Web サイトを見つけましたが、画像をダウンロードしたくない場合は、次のように指定できます。
$ wget --reject=gif WEBSITE-TO-BE-DOWNLOADED
12. wget -o を使用して stderr の代わりにログ ファイルにメッセージを記録する
ログを端末ではなくログ ファイルにリダイレクトする場合。
$ wget -o download.log DOWNLOAD-URL
13. wget -Q を使用して、一定のサイズを超えたらダウンロードを終了します
5 MB を超えたときにダウンロードを停止したい場合は、次の wget コマンド ラインを使用できます。
$ wget -Q5m -i FILE-WHICH-HAS-URLS
注: 単一の URL をダウンロードする場合、この割り当ては有効になりません。これは、クォータ サイズに関係なく、1 つのファイルを指定するとすべてがダウンロードされます。この割り当ては、再帰的なダウンロードにのみ適用されます。
14. wget -r -A を使用して特定のファイル タイプのみをダウンロードする
これは次の状況で使用できます:
- ウェブサイトからすべての画像をダウンロード
- ウェブサイトからすべての動画をダウンロード
- ウェブサイトからすべての PDF ファイルをダウンロード
$ wget -r -A.pdf http://url-to-webpage-with-pdfs/
15. wget による FTP ダウンロード
以下に示すように、wget を使用して FTP ダウンロードを実行できます。
Wget を使用した匿名 FTP ダウンロード
$ wget ftp-url
ユーザー名とパスワード認証で wget を使用した FTP ダウンロード。
$ wget --ftp-user=USERNAME --ftp-password=PASSWORD DOWNLOAD-URL
この記事が気に入ったら、おいしいまたはつまずきでブックマークしてください。