Linux
 Computer >> コンピューター >  >> スマートフォン >> Linux

【wget徹底解説】Linuxコマンドラインからファイルをダウンロードする方法

wgetとは?コマンドラインで使える強力なダウンローダー

このガイドでは、オープンソース(無料)のソフトウェア「wget」を使って、Linux・Windows・macOSのコマンドラインからファイルをダウンロードする方法を、ステップバイステップで解説します。

wgetは、LinuxやUNIX環境で広く使われている定番のコマンドラインダウンローダーで、WindowsやmacOSにも移植されています。「コマンドラインツールだから難しそう」と思われがちですが、実際は非常に強力かつ柔軟なツールです。最新のグラフィカルなダウンロードソフトにも引けを取らず、ダウンロードの中断からの再開、帯域幅の制御、認証への対応など、多彩な機能を備えています。

この記事では、まずwgetの基本的な使い方を紹介し、その後、wgetcronを組み合わせてWebサイトの完全バックアップを自動化する方法までご説明します。

wgetのインストール方法

多くのLinuxディストリビューションには、wgetが最初からインストールされています。もし手元の環境にwgetが入っていない場合は、以下のコマンドを試してみてください。

FedoraなどRed Hat系のLinuxの場合:

# yum install wget

UbuntuなどDebian系の場合:

# sudo apt-get install wget

いずれかのコマンドでインストールできるはずです。それでもうまくいかない場合は、お使いのディストリビューションのマニュアルでパッケージの入手・インストール方法を確認してください。Windowsユーザーは配布サイトからwgetを入手でき、Macユーザー向けにはmacOSにwgetをインストールする詳細ガイドも用意されています。

基本の使い方:URLからファイルをダウンロード

ダウンロードツールに求められる最も基本的な操作は、URLからファイルをダウンロードすることです。wgetでファイルをダウンロードするには、次のように入力します。

# wget https://www.simplehelp.net/images/file.zip

はい、これだけです。非常にシンプルですね。

応用編:Webサイト全体を階層指定でダウンロードする

次はもう少し面白いことをやってみましょう。wgetの真価が発揮されるのが、Webサイト全体のダウンロードです。wgetでは、ファイルを取得する階層の深さ(深度)を指定できます。

例えば、Yahoo!のトップページにあるリンク先(第1階層)までをダウンロードしたい場合は、次のように実行します。

# wget -r -l 1 https://www.yahoo.com/

各オプションの意味は以下のとおりです。

  • -r:再帰的な取得(リンクをたどってファイルを収集)を有効にします。
  • -l:レベル(階層の深さ)を指定します。隣の数字1は、1階層分だけリンクをたどるという意味です。

この数値を2に増やすと、wgetの処理時間がどれほど長くなるか試してみると、その威力を実感できるでしょう。

特定の拡張子のファイルだけをダウンロードする

WebサイトからすべてのJPEG画像をダウンロードしたい場合、Linuxコマンドラインに慣れたユーザーなら「wget https://www.sevenacross.com*.jpeg」のようなコマンドで動きそうだと推測するかもしれません。しかし残念ながら、これは動作しません。代わりに次のように指定します。

# wget -r -l1 --no-parent -A.jpeg https://www.yahoo.com

-A.jpegオプションでJPEGファイルのみを対象とし、--no-parentで親ディレクトリへ遡らないよう制限しています。

ダウンロードの途中再開:-cオプション

wgetのもうひとつの便利な機能が、ダウンロードの再開です。大きなファイルのダウンロード中にインターネット接続が切れてしまった場合も、-cオプションを使えば、中断した箇所からダウンロードを続行できます。

# wget -c https://www.example_url.com/ubuntu-live.iso

cronと組み合わせて毎日の自動バックアップを実現

次に、Webサイトの毎日のバックアップ設定に進みましょう。次のコマンドを実行すると、サイトのローカルディスク上へのミラーを作成できます。この用途のために、wgetには専用オプション--mirrorが用意されています。sevenacross.comをお使いのサイトのアドレスに置き換えて、以下のコマンドを試してください。

# wget --mirror https://www.sevenacross.com/

コマンドの実行が完了すると、Webサイトのローカルミラーが完成します。これはバックアップ用途として非常に便利な機能です。

さらに、このコマンドをシェルスクリプトにして、毎晩深夜0時に自動実行するようスケジュールしてみましょう。お好みのテキストエディタを開いて、以下を入力してください。バックアップ先のパスとWebサイトのURLは、ご自身の環境に合わせて変更してください。

#!/bin/bash

YEAR=`date +"%Y"`
MONTH=`date +"%m"`
DAY=`date +"%d"`

BACKUP_DIR=/home/backup/ # バックアップ先ディレクトリに置き換えてください
WEBSITE_URL=https://www.sevenacross.net # バックアップしたいサイトのURLに置き換えてください

# バックアップディレクトリを作成して移動
cd $BACKUP_DIR/$YEAR/$MONTH
mkdir $DAY
cd $DAY

wget --mirror ${WEBSITE_URL}

このファイルをwebsite_backup.shなどの名前で保存し、実行権限を付与します。

# chmod +x website_backup.sh

次に、crontabコマンドでcronの設定を開き、末尾に次の1行を追加します。

0 0 * * * /path/to/website_backup.sh

これで、毎日/home/backup/年/月/日の形式でサイトのコピーが保存されるようになります。cronやcrontabの使い方についてさらに詳しく知りたい方は、関連チュートリアルを参照してください。

まとめ:manページでさらに深く学ぼう

ここまでで、コマンドラインからファイルをダウンロードする基本をマスターしました。さらに高度な使い方を学びたい場合は、wgetのmanページを読んでみましょう。コマンドラインからman wgetと入力するだけで、詳細なドキュメントをいつでも確認できます。

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

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

  2. コマンドラインからUbuntuをアップグレードする方法|do-release-upgrade徹底解説

    Ubuntuの「アップデートマネージャー」を使えば、新しいメジャーリリースへのアップグレードは比較的簡単に行えます。GUIのウィザードが手順を順番に案内してくれるため、初心者でも迷わず操作できるでしょう。 しかし、GUIユーティリティを使えない場面もあります。たとえばサーバー環境ではグラフィカルインターフェースにアクセスできないため、コマンドラインでアップグレード作業を行うしかありません。 とはいえ、これだけがコマンドラインを使う理由ではありません。CLIでは処理の進行状況がより詳細に表示されるのが特徴です。多くのコマンドラインツールは実行中に大量のテキストを出力するため、アップグレードの詳細