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

wgetコマンド徹底解説:知っておくべき15の強力なダウンロードテクニック

wgetコマンド徹底解説:知っておくべき15の強力なダウンロードテクニックwgetは、インターネットからファイルをダウンロードするための最も強力で定番のコマンドラインツールです。大容量ファイルのダウンロード、再帰的なサイト全体の取得、非インタラクティブな処理、複数ファイルの一括ダウンロードなど、ほぼあらゆる複雑なダウンロード状況に対応できます。

本記事では、実際の使用シーン別に15のwget活用例を紹介します。日常の作業やサーバー管理にぜひ役立ててください。

1. 単一ファイルをダウンロードする

最も基本的な使い方です。以下の例では、指定したURLから単一のファイルをダウンロードし、カレントディレクトリに保存します。

$ wget https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

ダウンロード中には、以下の情報を含むプログレスバーが表示されます。

  • ダウンロード完了率(例:31%)
  • これまでにダウンロードしたバイト数(例:1,213,592バイト)
  • 現在のダウンロード速度(例:68.2K/s)
  • 残り時間(例:eta 34秒)

ダウンロード中の表示例:

$ wget https://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 https://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はURLの最後のスラッシュ以降の文字列をファイル名として使用します。しかし、この挙動が常に適切とは限りません。

悪い例:次のコマンドを実行すると、ファイルは「download_script.php?src_id=7701」という分かりにくい名前で保存されてしまいます。

$ wget https://www.vim.org/scripts/download_script.php?src_id=7701

ダウンロードしたファイルがzip形式であっても、以下のように拡張子なしで保存されます。

$ ls
download_script.php?src_id=7701

正しい例:-Oオプションを使えば、出力ファイル名を明示的に指定できます。

$ wget -O taglist.zip https://www.vim.org/scripts/download_script.php?src_id=7701

3. wget --limit-rate でダウンロード速度を制限する

wgetはデフォルトで利用可能な帯域幅を最大限に使おうとします。本番サーバーで大容量ファイルをダウンロードする場合、ネットワーク帯域を占有してしまうのは好ましくありません。そんなときは、--limit-rateオプションで速度を制限しましょう。

次の例では、ダウンロード速度を200KB/sに制限しています。

$ wget --limit-rate=200k https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

4. wget -c で中断されたダウンロードを再開する

途中で停止してしまったダウンロードは、-cオプション(continue)を使って再開できます。

$ wget -c https://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2

大容量ファイルのダウンロードが途中で切断された場合でも、最初からやり直す必要はありません。-cオプションを使えば、中断した箇所からダウンロードを続行できます。

注意:-cオプションを付けずにダウンロードを再開すると、同名のファイルが既に存在するため、wgetは自動的に「.1」を付加したファイル名で保存します。「.1」のファイルも存在する場合は「.2」となります。

5. wget -b でバックグラウンドでダウンロードする

大容量ファイルのダウンロードは、-bオプションでバックグラウンドに回すのが便利です。

$ wget -b https://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

なお、複数のログファイルを効率的に監視したい場合は、multitailコマンドの活用もおすすめです。

6. wget --user-agent でユーザーエージェントを偽装する

一部の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

7. wget --spider でダウンロードURLを事前テストする

定期的なダウンロードをスケジュールしている場合、実行時にきちんとダウンロードできるかどうかを事前に確認しておくと安心です。スケジュールに登録したコマンドラインをそのままコピーし、--spiderオプションを追加してテストしましょう。

$ wget --spider ダウンロード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!!!

--spiderオプションは、以下のような場面で活用できます。

  • ダウンロードをスケジュールする前の事前チェック
  • 一定間隔でのWebサイトの稼働監視
  • ブックマークしたページの一覧から、現存するページの確認

8. wget --tries でリトライ回数を増やす

インターネット接続が不安定な環境で大容量ファイルをダウンロードする場合、失敗する可能性があります。wgetはデフォルトで20回までリトライを行います。

必要に応じて、--triesオプションでリトライ回数を増やせます。

$ wget --tries=75 ダウンロードURL

9. wget -i で複数のファイル/URLをまとめてダウンロードする

まず、ダウンロードしたいURLをすべてテキストファイルに保存します。

$ cat > download-file-list.txt
URL1
URL2
URL3
URL4

次に、-iオプションでそのファイルを引数として渡します。

$ wget -i download-file-list.txt

10. wget --mirror でWebサイト全体をダウンロードする

Webサイト全体をローカルで閲覧できるようにダウンロードしたい場合は、次のコマンドを使用します。

$ wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
  • --mirror:ミラーリングに適した各種オプションを有効化(無限リトライ、タイムスタンプ比較など)
  • -p:HTMLページを正しく表示するために必要なすべてのファイル(CSS、画像など)をダウンロード
  • --convert-links:ダウンロード後、ドキュメント内のリンクをローカル閲覧用に変換
  • -P ./LOCAL-DIR:すべてのファイルとディレクトリを指定したディレクトリに保存

11. wget --reject で特定のファイルタイプを除外する

有用なWebサイトを見つけたものの、画像はダウンロードしたくない場合は、--rejectオプションで除外できます。

$ wget --reject=gif ダウンロード対象URL

12. wget -o でログをファイルに出力する

ログをターミナルではなくファイルに記録したい場合は、-oオプションを使用します。

$ wget -o download.log ダウンロードURL

13. wget -Q で一定サイズを超えたらダウンロードを中止する

ダウンロードサイズが5MBを超えたら自動的に停止したい場合は、次のように-Qオプションを指定します。

$ wget -Q5m -i URLリストファイル

注意:このクォータ制限は、単一URLのダウンロードには適用されません。単一ファイルを指定した場合は、クォータサイズに関係なく最後までダウンロードされます。このクォータは再帰的なダウンロードの場合にのみ有効です。

14. wget -r -A で特定のファイルタイプのみダウンロードする

以下のような場面で活用できます。

  • Webサイトからすべての画像をダウンロードする
  • Webサイトからすべての動画をダウンロードする
  • WebサイトからすべてのPDFファイルをダウンロードする
$ wget -r -A.pdf https://url-to-webpage-with-pdfs/

15. wgetでFTPダウンロードを行う

wgetはFTPプロトコル経由のダウンロードにも対応しています。

匿名FTPからのダウンロード:

$ wget ftp-url

ユーザー名とパスワードによる認証が必要なFTPダウンロード:

$ wget --ftp-user=USERNAME --ftp-password=PASSWORD ダウンロードURL

セキュリティ上の観点から、パスワードをコマンドラインに直接記述するのは避け、対話式入力や設定ファイルの利用を検討することをおすすめします。

この記事がお役に立ちましたら、ぜひブックマークやSNSでのシェアをお願いします。

  1. Watchmanとは?Linuxでファイル・ディレクトリの変更を効率的に監視する方法

    Watchmanは、Facebookが開発したオープンソースのクロスプラットフォーム対応ファイル監視サービスです。ファイルやディレクトリの変更を監視し、変更が発生した際に記録やアクションを実行できます。Linux、OS X、FreeBSD、Solarisで動作し、クライアントサーバーモデルを採用している点が特徴です。また、Linuxカーネルのinotify機能を利用することで、強力かつ高精度な通知を実現しています。 Watchmanの主な特徴 1つ以上のディレクトリツリーを再帰的に監視できる 監視対象の各ディレクトリは「root(ルート)」と呼ばれる コマンドラインまたはJSON形式の設定フ

  2. Vimマクロの使い方を徹底解説!操作の記録と再生をステップバイステップでマスター

    Vimには強力な「マクロ」機能が搭載されており、エディタ内で行った一連の操作を記録し、あとで何度でも再生することができます。同じような編集作業を大量に繰り返す場合、この機能を使いこなせるかどうかで作業効率が大きく変わります。 本記事では、Vi/Vimエディタにおけるマクロの記録・再生方法を、2つの具体的な例題を通じて詳しく解説します。 Vimマクロの記録と再生:基本の手順 記録を開始:「q」キーを押した後、小文字のアルファベット(レジスタ名)を入力 編集操作を実行:Vim上で通常どおりの編集を行うと、その操作がすべて記録される 記録を終了:「q」キーを押す マクロを再生:「@」キーの後にマ