wgetとcurlの根本的な違い

UNIXの代表的なダウンローダにwgetとcurlがあります。
たいていの場合どんなOSでも、どちらかのソフトがインストールされているのではないかと思います。
しかし、この2つのダウンローダの機能は、一見似ているようにも見えますが、実はそれぞれに特徴が見られるので、今日はそれについて解説してみます。

wgetの特徴

wgetのスペルは「片手でもコマンドできる」ということもあって、多くの人から気に入られています。
そんなwgetの特徴として、最も際立っているのが、クローラとして動作可能という点です。
オプションで-rを付加してやることで再帰的に動作し、-lでその深さを指定することができます。
また、-Aや-Rを利用すれば、ダウンロードする拡張子のホワイトリストとブラックリストを指定することも可能です。
つまり、特定のサイト内に散らばって存在するファイルを、拡張子によって指定ダウンロードできるのです。
curlには、htmlに記述されているリンクをたどっていく機能はないので、こんなことはできません。
また、自分のサイトのファイルをダウンロードしてミラーリングを行おうという場合にも、やはりwgetに軍配が上がります。

# -r:再帰的に   -A:拡張子を指定    -l:リンクの階層を指定
wget -r -A jpg,png,gif,bmp -l 3 http://www.abc.com/

# -m:ミラーリング
wget -m http://www.abc.com/

# --spideer:再帰的にクローリングするけれど、ダウンロードはしない
wget --spider http://www.abc.com/

curlの特徴

curlの特徴は、対応しているプロトコルや、機能の量にあります。
HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP、FILEと、多くの拡張子に対応している上、プロキシ、ユーザー認証、FTPアップロード、HTTP POST、SSL接続などができてしまう優れものです。
そして、その上、もう1つの優れた機能があります。
curlには連番ファイルのダウンロードが可能です。
wgetでこれをやろうとしても、自分でテキストファイルにURLのリストを作って、-iオプションで入力するしかありません。
その点、curlは始めから連番ファイルのダウンロードができるようになっているので、ネットからのダウンロードに重宝します。

# 1〜100までのファイル
curl -O http://www.abc.com/file_[1-100].jpg

# a〜zまでのファイル
curl -O http://www.abc.com/file_[a-z].jpg

# 1〜100までを10きざみで
curl -O http://www.abc.com/file_[1-100:10].jpg

# one,two,threeで置き換えて
curl -O http://www.abc.com/file_{one,two,three}.jpg

まとめ

それぞれの特徴をまとめますと、wgetはクローラとして、curlは連番ファイルのダウンローダとしての機能が盛り込まれています。
両方とも優れた機能を持っているので、状況によって使い分けできたら最高ですね。