この記事では、wgetユーティリティーについてレビューします。このユーティリティーは、World Wide Web(WWW)からHTTP、HTTPS、FTP、FTPSなどの広く使用されているプロトコルを使用してファイルを取得します。
Wgetは、多くの機能を備えた無料のコマンドラインユーティリティーであり、ファイルのダウンロードを容易にします。これには、次の機能が含まれます:
- 大きなファイルをダウンロードするか、完全なウェブまたはFTPサイトをミラーリングする。
- 複数のファイルを一度にダウンロードする。
- ダウンロードの帯域幅と速度制限を設定する。
- プロキシ経由でファイルをダウンロードする。
- 中断されたダウンロードを再開できる。
- ディレクトリを再帰的にミラーリングする。
- ほとんどのUNIX系オペレーティングシステムおよびWindowsで実行されます。
- 監視/バックグラウンドでの動作。
- 持続的なHTTP接続のサポート。
- OpenSSLまたはGnuTLSライブラリを使用した暗号化されたダウンロードのためのSSL/TLSのサポート。
- IPv4およびIPv6のダウンロードのサポート。
目次
Wgetコマンドの構文
Wgetの基本的な構文は次のとおりです:
$ wget [option] [URL]
まず、次のコマンドを使用して、wgetユーティリティがLinuxボックスにすでにインストールされているかどうかを確認してください。
$ rpm -q wget [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ dpkg -l | grep wget [On Debian, Ubuntu and Mint]
LinuxにWgetをインストールする
Wgetがインストールされていない場合は、以下に示すようにLinuxシステムのデフォルトのパッケージマネージャを使用してインストールできます。
$ sudo apt install wget -y [On Debian, Ubuntu and Mint] $ sudo yum install wget -y [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a net-misc/wget [On Gentoo Linux] $ sudo pacman -Sy wget [On Arch Linux] $ sudo zypper install wget [On OpenSUSE]
ここで使用されている-y
オプションは、パッケージをインストールする前に確認プロンプトを防止するためです。パッケージ管理に関するさらなるYUMおよびAPTコマンドの例およびオプションについては、次の記事を参照してください:
1. Wgetを使用してファイルをダウンロードする
このコマンドは単一のファイルをダウンロードし、現在のディレクトリに保存します。また、ダウンロード中にダウンロードの進行状況、サイズ、日付、および時間も表示します。
# wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz --2021-12-10 04:15:16-- http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3565643 (3.4M) [application/x-gzip] Saving to: ‘wget2-2.0.0.tar.gz’ wget2-2.0.0.tar.gz 100%[==========>] 3.40M 2.31MB/s in 1.5s 2021-12-10 04:15:18 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]
2. 異なる名前でファイルをWgetでダウンロードする
大文字の-O
オプションを使用して、異なるファイル名でファイルをダウンロードします。以下に示すように、wget.zipファイル名を指定しています。
# wget -O wget.zip http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz --2021-12-10 04:20:19-- http://ftp.gnu.org/gnu/wget/wget-1.5.3.tar.gz Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 446966 (436K) [application/x-gzip] Saving to: ‘wget.zip’ wget.zip 100%[===================>] 436.49K 510KB/s in 0.9s 2021-12-10 04:20:21 (510 KB/s) - ‘wget.zip’ saved [446966/446966]
3. HTTPおよびFTPプロトコルを使用したWgetで複数のファイルをダウンロードする
ここでは、wgetコマンドを使用してHTTPおよびFTPプロトコルを同時に使用して複数のファイルをダウンロードする方法を示します。
$ wget http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz ftp://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz.sig --2021-12-10 06:45:17-- http://ftp.gnu.org/gnu/wget/wget2-2.0.0.tar.gz Resolving ftp.gnu.org (ftp.gnu.org)... 209.51.188.20, 2001:470:142:3::b Connecting to ftp.gnu.org (ftp.gnu.org)|209.51.188.20|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 3565643 (3.4M) [application/x-gzip] Saving to: ‘wget2-2.0.0.tar.gz’ wget2-2.0.0.tar.gz 100%[==========>] 4.40M 4.31MB/s in 1.1s 2021-12-10 06:46:10 (2.31 MB/s) - ‘wget2-2.0.0.tar.gz’ saved [3565643/3565643]
4. ファイルから複数のファイルを一括ダウンロードする
一度に複数のファイルをダウンロードするには、ダウンロードするURLのリストを含むファイルの場所を指定して-i
オプションを使用します。各URLは、別々の行に追加する必要があります。
例えば、以下のファイル’download-linux.txt‘には、ダウンロードするURLのリストが含まれています。
# cat download-linux.txt https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso https://download.rockylinux.org/pub/rocky/8/isos/x86_64/Rocky-8.5-x86_64-dvd1.iso https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.2.0-amd64-DVD-1.iso
# wget -i download-linux.txt --2021-12-10 04:52:40-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.88.247, 91.189.91.124, ... Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 3071934464 (2.9G) [application/x-iso9660-image] Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’ ubuntu-20.04.3-desktop-amd64 4%[=> ] 137.71M 11.2MB/s eta 3m 30s ...
URLリストに特定の番号パターンがある場合は、そのパターンに一致するすべてのURLを取得するために波括弧を追加できます。たとえば、バージョン5.1.1から5.1.15までの一連のLinuxカーネルをダウンロードしたい場合は、次のようにします。
$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.{1..15}.tar.gz --2021-12-10 05:46:59-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1 Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected. WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted. WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated. The certificate has not yet been activated HTTP request sent, awaiting response... 200 OK Length: 164113671 (157M) [application/x-gzip] Saving to: ‘linux-5.1.1.tar.gz’ linux-5.1.1.tar.gz 100%[===========>] 156.51M 2.59MB/s in 61s 2021-12-10 05:48:01 (2.57 MB/s) - ‘linux-5.1.1.tar.gz’ saved [164113671/164113671] --2021-12-10 05:48:01-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.2.tar.gz Reusing existing connection to mirrors.edge.kernel.org:443. HTTP request sent, awaiting response... 200 OK Length: 164110470 (157M) [application/x-gzip] Saving to: ‘linux-5.1.2.tar.gz’ linux-5.1.2.tar.gz 19%[===========] 30.57M 2.58MB/s eta 50s
5. ダウンロードの再開
大きなファイルのダウンロードの場合、ダウンロードが途中で停止することがあります。その場合、-c
オプションを使用して同じファイルのダウンロードを停止した場所から再開できます。
ただし、-c
オプションを指定せずにファイルをダウンロードし始めると、.1
拡張子がファイルの末尾に追加され、新しいダウンロードと見なされます。したがって、大きなファイルをダウンロードする場合は、-cスイッチを追加するのが良い習慣です。
# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso --2021-12-10 05:27:59-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.247, 91.189.91.123, 91.189.91.124, ... Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.247|:443... connected. HTTP request sent, awaiting response... 206 Partial Content Length: 3071934464 (2.9G), 2922987520 (2.7G) remaining [application/x-iso9660-image] Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’ ubuntu-20.04.3-desktop-amd64.iso 5%[++++++> ] 167.93M 11.1MB/s ^C [root@tecmint ~]# wget -c https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso --2021-12-10 05:28:03-- https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso Resolving releases.ubuntu.com (releases.ubuntu.com)... 91.189.88.248, 91.189.91.124, 91.189.91.123, ... Connecting to releases.ubuntu.com (releases.ubuntu.com)|91.189.88.248|:443... connected. HTTP request sent, awaiting response... 206 Partial Content Length: 3071934464 (2.9G), 2894266368 (2.7G) remaining [application/x-iso9660-image] Saving to: ‘ubuntu-20.04.3-desktop-amd64.iso’ ubuntu-20.04.3-desktop-amd64.iso 10%[+++++++=====> ] 296.32M 17.2MB/s eta 2m 49s ^
6. ウェブサイト全体をミラーリングする
ウェブサイト全体をオフラインで閲覧するために、次のコマンドを使用してダウンロード、ミラー、またはコピーすることができます。すべてのアセット(JavaScript、CSS、画像)とともにウェブサイトのローカルコピーが作成されます。
$ wget --recursive --page-requisites --adjust-extension --span-hosts --convert-links --restrict-file-names=windows --domains yoursite.com --no-parent yoursite.com
上記コマンドの説明。
wget \ --recursive \ # Download the whole site. --page-requisites \ # Get all assets/elements (CSS/JS/images). --adjust-extension \ # Save files with .html on the end. --span-hosts \ # Include necessary assets from offsite as well. --convert-links \ # Update links to still work in the static version. --restrict-file-names=windows \ # Modify filenames to work in Windows as well. --domains yoursite.com \ # Do not follow links outside this domain. --no-parent \ # Don't follow links outside the directory you pass in. yoursite.com/whatever/path # The URL to download
7. Wgetファイルのバックグラウンドダウンロード
オプション-b
を使用すると、ダウンロードが開始されるとすぐにバックグラウンドでダウンロードを送信し、ログはwget.logファイルに書き込まれます。
$ wget -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso Continuing in background, pid 8999. Output will be written to ‘wget.log’.
8. Wgetファイルダウンロード速度制限の設定
オプション--limit-rate=100k
を使用すると、ダウンロード速度制限が100kに制限され、ログは以下に示すようにwget.logに作成されます。
$ wget -c --limit-rate=100k -b wget.log https://releases.ubuntu.com/20.04.3/ubuntu-20.04.3-desktop-amd64.iso Continuing in background, pid 9108. Output will be written to ‘wget-log’.
wget.logファイルを表示して、wgetのダウンロード速度を確認します。
$ tail -f wget-log 5600K .......... .......... .......... .......... .......... 0% 104K 8h19m 5650K .......... .......... .......... .......... .......... 0% 103K 8h19m 5700K .......... .......... .......... .......... .......... 0% 105K 8h19m 5750K .......... .......... .......... .......... .......... 0% 104K 8h18m 5800K .......... .......... .......... .......... .......... 0% 104K 8h18m 5850K .......... .......... .......... .......... .......... 0% 105K 8h18m 5900K .......... .......... .......... .......... .......... 0% 103K 8h18m 5950K .......... .......... .......... .......... .......... 0% 105K 8h18m 6000K .......... .......... .......... .......... .......... 0% 69.0K 8h20m 6050K .......... .......... .......... .......... .......... 0% 106K 8h19m 6100K .......... .......... .......... .......... .......... 0% 98.5K 8h20m 6150K .......... .......... .......... .......... .......... 0% 110K 8h19m 6200K .......... .......... .......... .......... .......... 0% 104K 8h19m 6250K .......... .......... .......... .......... .......... 0% 104K 8h19m ...
9. Wget FTPおよびHTTP経由でパスワードで保護されたファイルをダウンロード
パスワードで保護されたFTPサーバーからファイルをダウンロードするには、--ftp-user=username
と--ftp-password=password
オプションを使用します。
$ wget --ftp-user=narad --ftp-password=password ftp://ftp.example.com/filename.tar.gz
パスワードで保護されたHTTPサーバーからファイルをダウンロードするには、--http-user=username
と--http-password=password
オプションを使用します。
$ wget --http-user=narad --http-password=password http://http.example.com/filename.tar.gz
10. Wget の SSL 証明書チェックを無視する
HTTPS を介してファイルをダウンロードする際に SSL 証明書のチェックを無視するには、--no-check-certificate
オプションを使用できます:
$ wget --no-check-certificate https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz --2021-12-10 06:21:21-- https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.1.1.tar.gz Resolving mirrors.edge.kernel.org (mirrors.edge.kernel.org)... 147.75.95.133, 2604:1380:3000:1500::1 Connecting to mirrors.edge.kernel.org (mirrors.edge.kernel.org)|147.75.95.133|:443... connected. WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not trusted. WARNING: The certificate of ‘mirrors.edge.kernel.org’ is not yet activated. The certificate has not yet been activated HTTP request sent, awaiting response... 200 OK Length: 164113671 (157M) [application/x-gzip] Saving to: ‘linux-5.1.1.tar.gz’ ...
11. Wget のバージョンとヘルプ
オプション --version
と --help
を使用して、必要に応じてバージョンとヘルプを表示できます。
$ wget --version $ wget --help
この記事では、日常の管理タスク用の Linux wget コマンドとオプションを紹介しています。詳細を知りたい場合は、man wget を参照してください。ご意見や見落としがあれば、コメントボックスを通じて共有してください。
Source:
https://www.tecmint.com/10-wget-command-examples-in-linux/