wgetとcurlの違い
サーバ関係の作業をしていると、よくwgetを使っているサイトを見るんですが、
稀にcurlを使っているサイト見かけます。
どちらも、ダウンロードをするのに使うコマンドなんですが、
その違いを調べてみました。
wget
読み方は「ダブルゲット」です!
自分は、ずっと「ダブリューゲット」って読んでました…笑
みなさん、ご存知の通り、ファイルをダウンロードする時に使うコマンドです。
wgetには、2つの特徴があります。
- 再帰的にファイルをダウンロードすることができる
- 左手だけで入力することができる
curlと違って、再帰的にファイルをダウンロードすることができるのが最大の特徴です。
wgetで対応しているプロトコルは、HTTP・HTTPS・FTPのみです。
実は、アップロードもできたんですね…
今まで、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、POP3、IMAP、SMB/CIFS、SMTP、RTMP、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