確認環境
PC | Thinkpad X1 Carbon 2nd Gen |
OS | FreeBSD 12.0-RELEASE-p5 |
cURL | curl 7.65.0 (amd64-portbld-freebsd12.0) |
wget | GNU Wget 1.20.3 built on freebsd12.0 |
課題
コマンドラインからインターネット上のファイルをサクッとダウンロードしたい。
対策
FreeBSD標準のfetch
コマンドでもファイルのダウンロードができる。
ただ、何かと便利なcURL
とwget
をインストールしておこう。
下記のような感じで使える。
> wget ダウンロードしたいファイルのURL
ここでは、下記について説明する。
1. cURL と wgetの特徴
cURLとwgetの違いについてはこちらのサイトが詳しい。
利用者からすると下記のような特徴があるっぽい。
wgetはファイルのダウンロードに特化していて、cURLはもっと汎用的なイメージ。
2. インストール
どちらもpkg
コマンドでインストールできる。
(root権限で実施してね)
> pkg install curl wget
3. 基本的な使い方
ここでは、基本的な使い方をいくつか紹介する。
詳細は、man wget
やページ末の参考サイトで調べてねと。
ダウンロード(ファイルへ保存)
> curl -Lo filename http://target.url.com/ > wget -O filename http://target.url.com/ > wget http://target.url.com/
- cURL
-L
: リダイレクトを有効にする(wget
はデフォルト有効)-o filename
: ファイルを保存するパスを指定 (上記では-Lo
で-L
とまとめて指定)
- wget
-O filename
: ファイルを保存するパスを指定(省略時は 元のファイル名で保存)
ダウンロード(標準出力へ出力)
> curl -s http://target.url.com/ > wget -q -O - http://target.url.com/
wgetでの一括ダウンロード実例
FreeBSD Handbook - UNIX の基礎知識直下のリンクをダウンロードしてみる。
※ 指定URLのサーバに負荷がかかるので自重しましょう
> wget -nd -nH -np -p -k -r -l 1 -w 2 -A html -P handbook https://www.freebsd.org/doc/ja_JP.eucJP/books/handbook/basics.html
- options
-nd
: 階層ディレクトリを作成しない-nH
: ホスト名のディレクトリを作成しない-np
: 指定URLより親の階層は辿らない-p
: ローカル環境で表示するために必要なファイルも含めてダウンロードする-k
: ダウンロード後、各リンクのURLをローカルで参照できる形に変換する-r
: 指定URLから再帰的に辿る-l 1
: 再帰的にリンクを辿る回数の制限。'0'を指定した場合は、無制限-w 2
: 1回のリクエストをサーバに送る際の待機秒数(例では2秒)-A html
: ダウンロードするファイル拡張子。複数の場合カンマ区切りで指定-P handbook
: 保存するディレクトリ名(例では'handbook')
引数がない1文字のオプションは、まとめて書ける。
(-p -k -r
⇨ -pkr
みたいな感じ)
上記コマンド実行後、ディレクトリには下記のようなファイルが保存された。
> find . . ./handbook ./handbook/basics-devices.html ./handbook/basics-processes.html ./handbook/using-live-cd.html ./handbook/editors.html ./handbook/mount-unmount.html ./handbook/basics.html ./handbook/legalnotice.html ./handbook/basics-more-information.html ./handbook/robots.txt.tmp ./handbook/index.html ./handbook/dirstructure.html ./handbook/shells.html ./handbook/permissions.html ./handbook/getting-started.html ./handbook/basics-daemons.html ./handbook/disk-organization.html ./handbook/consoles.html
参考
以上。