UNIXの代表的なダウンローダにwgetとcurlがあります。
たいていの場合どんなOSでも、どちらかのソフトがインストールされているのではないかと思います。
しかし、この2つのダウンローダの機能は、一見似ているようにも見えますが、実はそれぞれに特徴が見られるので、今日はそれについて解説してみます。
wgetのスペルは「片手でもコマンドできる」ということもあって、多くの人から気に入られています。
そんなwgetの特徴として、最も際立っているのが、クローラとして動作可能という点です。
オプションで-rを付加してやることで再帰的に動作し、-lでその深さを指定することができます。
また、-Aや-Rを利用すれば、ダウンロードする拡張子のホワイトリストとブラックリストを指定することも可能です。
つまり、特定のサイト内に散らばって存在するファイルを、拡張子によって指定ダウンロードできるのです。
curlには、htmlに記述されているリンクをたどっていく機能はないので、こんなことはできません。
また、自分のサイトのファイルをダウンロードしてミラーリングを行おうという場合にも、やはりwgetに軍配が上がります。
wget -r -A jpg,png,gif,bmp -l 3 http://www.abc.com/ wget -m http://www.abc.com/ wget --spider http://www.abc.com/
curlの特徴は、対応しているプロトコルや、機能の量にあります。
HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TFTP、DICT、TELNET、LDAP、FILEと、多くの拡張子に対応している上、プロキシ、ユーザー認証、FTPアップロード、HTTP POST、SSL接続などができてしまう優れものです。
そして、その上、もう1つの優れた機能があります。
wgetでこれをやろうとしても、自分でテキストファイルにURLのリストを作って、-iオプションで入力するしかありません。
その点、curlは始めから連番ファイルのダウンロードができるようになっているので、ネットからのダウンロードに重宝します。
curl -O http://www.abc.com/file_[1-100].jpg curl -O http://www.abc.com/file_[a-z].jpg curl -O http://www.abc.com/file_[1-100:10].jpg curl -O http://www.abc.com/file_{one,two,three}.jpg
それぞれの特徴をまとめますと、wgetはクローラとして、curlは連番ファイルのダウンローダとしての機能が盛り込まれています。
両方とも優れた機能を持っているので、状況によって使い分けできたら最高ですね。