wgetとcurlの違い

サーバ関係の作業をしていると、よくwgetを使っているサイトを見るんですが、
稀にcurlを使っているサイト見かけます。
どちらも、ダウンロードをするのに使うコマンドなんですが、
その違いを調べてみました。

wget

読み方は「ダブルゲット」です!
自分は、ずっと「ダブリューゲット」って読んでました…笑
みなさん、ご存知の通り、ファイルをダウンロードする時に使うコマンドです。
wgetには、2つの特徴があります。

  • 再帰的にファイルをダウンロードすることができる
  • 左手だけで入力することができる

curlと違って、再帰的にファイルをダウンロードすることができるのが最大の特徴です。
wgetで対応しているプロトコルは、HTTP・HTTPSFTPのみです。
実は、アップロードもできたんですね…

今まで、wgetコマンドにオプションを使ったことがなかったんですが、便利なオプションがあるんですね!
ここで、wgetコマンドの便利なオプションを紹介したいと思います。

# index.htmlファイルをダウンロード
wget http://xxxxx/yyyyy/zzzzz/index.html

# オプション「-r」
# ディレクトリにあるファイルを全部ダウンロード
wget -r http://xxxxx/yyyyy/zzzzz/

# オプション「-I」 
# 再帰的にダウンロードする場合に、階層の数を指定する
wget -r -I 3 http://xxxxx/yyyyy/zzzzz/

# オプション「-A」 
# 指定した文字列のあるファイルをダウンロードする
wget -r -A png http://xxxxx/yyyyy/zzzzz/

# オプション「-R」 
# 指定した文字列のあるファイルはダウンロードしない
wget -r -A jpg http://xxxxx/yyyyy/zzzzz/

curl

読み方は「カール」です。
curlの最大の特徴は、

  • サポートが充実している

です。
例えば、wgetと異なり、curlで対応しているプロトコルには、
FTP、FTPS、Gopher、HTTP、HTTPS、SCP、SFTP、TFTP、TELNET、DICT、LDAP、LDAPS、FILE、POP3IMAP、SMB/CIFS、SMTPRTMP、RTSP
があります。
他にも、wgetでは対応していないものが、curlでは対応されているという場合があります。

# オプション「-o(小文字)」
# ダウンロードしたファイルを指定したファイルに出力する
curl -o index2.html http://xxxxx/yyyyy/zzzzz/index.html

# オプション「-O(大文字)」
# index.htmlファイルをダウンロード
curl -O http://xxxxx/yyyyy/zzzzz/index.html

# 連番ファイルをダウンロードする
curl -O ftp://ftp.example.com/data[001-100].txt

curlコマンドは、SFTPプロトコルに対応しているので、
curlコマンドを使って、SFTPでアップロードできないのかな…?
どうやるのか、分からないので
教えていただけると嬉しいです!

参考:Linuxコマンド集 - 【 wget 】 ファイルをダウンロードする:ITpro
   Linuxコマンド集 - 【curl】ファイルのダウンロードやアップロードを行う:ITpro