web-dev-qa-db-ja.com

curlとwgetの違いは何ですか?

これらのcurlwgetは両方とも、ファイルのダウンロードなどに使用されます。どちらか一方を使用する理由はありますか?

38
snoop

「適切な使用」を定義したら、wgetを使用します。

どうして?それが理由です:

再帰的! curlと比較したwgetの大きな強みは、再帰的にダウンロードできることです。HTMLページやFTPディレクトリリストなど、リモートリソースから参照されるすべてをダウンロードすることさえできます。


here からコピーされた恥知らず

curl

  • librarycurlは、libcurlによって強化されています。これは、誰でも使用できる安定したAPIを備えたクロスプラットフォームライブラリです。この違いは、内部的に物事を行う方法に関してまったく異なる態度を作り出すため、大きなものです。また、ライブラリを作成することは、「単なる」コマンドラインツールよりもわずかに困難です。

  • パイプcurlは、従来のUnixのcatコマンドと同様に機能し、stdoutにより多くのものを送信し、「すべてがパイプ」方式でstdinからより多くを読み取ります。 wgetは、cpに似ており、同じアナログを使用します。

  • シングルショットcurlは、基本的にデータのシングルショット転送を行うために作成されます。ユーザーが指定したURLのみを転送し、再帰的なダウンロードロジックやHTMLパーサーは含まれません。

  • その他のプロトコルcurlは、FTP、FTPS、Gopher、HTTP、HTTPS、SCP、SFTP、TFTP、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMB/CIFS、SMTP、RTMPおよびRTSPをサポートします。 Wgetは、HTTP、HTTPS、およびFTPのみをサポートします。

  • よりポータブルにcurlは、wgetよりも多くのプラットフォームでビルドおよび実行されます。たとえば、OS/400、TPF、および単純なUnixクローンではないその他の「エキゾチック」なプラットフォーム。

  • その他のSSLライブラリとSSLサポートcurlは、11種類(11!)の異なるSSL/TLSライブラリのうちの1つを使用して構築でき、プロトコルの詳細に対するより多くの制御とより広いサポートを提供します。 curlは公開キーの固定をサポートしています。

  • HTTP認証curlは、特にHTTPプロキシ経由で、より多くのHTTP認証方法をサポートします:Basic、Digest、NTLM、およびNegotiate

  • ソックスcurlは、プロキシアクセス用にいくつかのSOCKSプロトコルバージョンをサポートしています

  • 双方向curlは、アップロードおよび送信機能を提供します。 wgetは、プレーンHTTP POSTサポートのみを提供します。

  • HTTPマルチパート/フォームデータ送信。これにより、ユーザーはHTTP「アップロード」を行い、一般的にブラウザをエミュレートし、HTTPオートメーションをより広範囲に実行できます。

  • curlgzipをサポートし、Content-Encodingを拡張し、自動解凍を行います

  • curlはTransfer-Encoded HTTPの圧縮解除を提供および実行しますが、wgetは提供しません。

  • curlはHTTP/2をサポートし、Happy Eyeballsを使用してデュアルスタック接続を行います

  • より多くの開発者のアクティビティ。これについては議論の余地がありますが、ここでは、メーリングリストのアクティビティ、ソースコードのコミット頻度、リリース頻度の3つの指標を検討します。これらの2つのプロジェクトをフォローしている人なら誰でも、curlプロジェクトのペースがこれらすべての分野ではるかに高いことがわかります。10年以上もそうです。 OpenHubで比較する


wget

  • wgetはコマンドラインのみです。ライブラリはありません。

  • 再帰的wgetのcurlと比較した場合の大きな強みは、再帰的にダウンロードできることです。HTMLページやFTPディレクトリリストなど、リモートリソースから参照されるすべてをダウンロードすることもできます。

  • Olderwgetのトレースは1995年まで遡りますが、curlは1996年の終わりまで遡って追跡できます。

  • GPLwgetは100%GPL v3です。 curlはMITライセンスです。

  • GNUwgetはGNUプロジェクトの一部であり、すべての著作権はFSFに割り当てられています。 curlプロジェクトは完全にスタンドアロンで独立しており、ダニエルが所有するほとんどすべての著作権を所有する組織はまったくありません。

  • wgetは、リモートURLをローカルファイルに単純にダウンロードするための追加オプションを必要としませんが、curl-oまたは-Oを必要とします。

  • wgetは、cookieドメインを処理するためのPublic Suffix Listをサポートしますが、curlはサポートしません。

  • wgetは、SSL/TLSサポート用にGnuTLSまたはOpenSSLのみをサポートします

  • wgetは、HTTPプロキシを介した唯一の認証タイプとして基本認証のみをサポートします

  • wgetにはSOCKSサポートがありません

  • 途中で破損した転送から回復してダウンロードを続行する機能には、curlに対応するものがありません。

  • wgetは、qwertyキーボードの左手を使用して入力できます!

33
A.B.

curlsnarfwgetpavukfgetfetchlftpのようなダウンロード可能なツールがたくさんありますaria2HTTrackなど。要件に応じて使用し、ダウンロードとともに使用する機能を選択します。 機能テーブル を確認し、それに応じて使用します。

カール:

  • Curlはより多くのプロトコルFTP、FTPS、HTTP、HTTPS、SCP、SFTP、TFTP、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMPおよびRTSPをサポートします
  • Curlはより多くのSSLライブラリをサポートします
  • Curlは、特にHTTPプロキシ経由で、より多くのHTTP認証方法をサポートします:Basic、Digest、NTLM、およびNegotiate
  • Curlはlibcurlによって強化されています-誰でも使用できる安定したAPIを備えたクロスプラットフォームライブラリ

Wget:

  • WgetはHTTP、HTTPS、およびFTPをサポートしますが
  • WgetはSSL/TLSサポート用にGnuTLSまたはOpenSSLのみをサポートします
  • Wgetは、HTTPプロキシを介した唯一の認証タイプとして基本認証のみをサポートします
  • Wgetはコマンドラインツールのみであり、ライブラリはありません。

詳細情報の重要なリソース:

19
pl_rock

これらには多くの共通機能がありますが、curlにはさらに多くのオプションがあります。 wgetの場合は、man wgetを抜けるだけで十分な場合がありますが、curlの場合は、ブラウザで このWebページ を調べる必要があります。あなたのブラウザができることは何でも、curlもできると信じています。

3
Jos

Wgetとcurlには別の違いがあり、それが重要だと思います。

Wgetは、インターネットコンテンツを迅速かつ簡単に取得することを主な目的としたスタンドアロンのコマンドラインユーティリティです。

一方、Curlは基本的に強力なlibcurlライブラリのターミナルフロントエンドです。 Libcurlは、すべてのフォームとフレーバーのURLを操作するための非常に強力なツールセットを提供し、ほぼすべての言語とプラットフォームで使用できます。 Curlは基本的に、シェルスクリプトでこのライブラリを使用する機能を提供します。

2
barbecue