LinuxでのcURLとwgetの違い:違いは何ですか?

公開: 2022-07-13
bashプロンプトを表示するLinuxラップトップ
fatmawati achmad zaenuri / Shutterstock.com

多くのLinuxユーザーに、ファイルのダウンロードに使用するものを尋ねると、 wgetと言う人もいれば、 cURLと言う人もいます。 違いは何ですか、そして一方が他方よりも優れていますか?

それは接続性から始まりました

政府の研究者は、1960年代までさかのぼって、さまざまなネットワークを相互に接続し始め、相互接続されたネットワークを生み出していました。 しかし、私たちが知っているインターネットの誕生は、TCP/IPプロトコルが実装された1983年1月1日に起こりました。 これは欠落しているリンクでした。 これにより、異種のコンピューターとネットワークが共通の標準を使用して通信できるようになりました。

1991年、CERNは、数年間社内で使用していたWorldWideWebソフトウェアをリリースしました。 このインターネット用のビジュアルオーバーレイへの関心は、即座に広まりました。 1994年の終わりまでに、10,000台のWebサーバーと1,000万人のユーザーがいました。

インターネットはどのように機能しますか?
関連インターネットはどのように機能しますか?

これらの2つのマイルストーン(インターネットとWeb)は、接続の非常に異なる面を表しています。 しかし、それらは多くの同じ機能も共有しています。

接続性はまさにそれを意味します。 サーバーなどのリモートデバイスに接続しています。 そして、あなたが必要としている、または欲しいものがそこにあるので、あなたはそれに接続しています。 しかし、Linuxコマンドラインから、リモートでホストされているリソースをローカルコンピューターに取得するにはどうすればよいでしょうか。

1996年に、リモートでホストされているリソースをダウンロードできる2つのユーティリティが誕生しました。 1月にリリースされたwgetと12月にリリースされたcURLです。 どちらもLinuxコマンドラインで動作します。 どちらもリモートサーバーに接続し、両方ともコンテンツを取得します。

しかし、これは、同じ仕事をするために2つ以上のツールを提供するLinuxの通常のケースだけではありません。 これらのユーティリティには、さまざまな目的と専門性があります。 問題は、どちらをいつ使用するかについて混乱を引き起こすほど類似していることです。

2人の外科医を考えてみましょう。 おそらく、眼科医に心臓バイパス手術を行わせたくないでしょうし、心臓外科医に白内障手術を行わせたくないでしょう。 はい、彼らは両方とも高度な技術を持った医療専門家ですが、それは彼らがお互いのドロップイン代替品であることを意味するものではありません。

同じことがwgetcURLにも当てはまります。

さまざまな目的、さまざまな機能、いくつかの重複

wgetコマンドの「w」は、その意図された目的を示しています。 その主な目的は、Webページ、またはWebサイト全体をダウンロードすることです。 そのmanページには、HTTP、HTTPS、およびFTPプロトコルを使用してWebからファイルをダウンロードするユーティリティとして説明されています。

対照的に、 cURLは、HTTPSだけでなく、SCP、SFTP、SMSBを含む26のプロトコルで動作します。 そのmanページには、サーバーとの間でデータ転送するためのツールであると記載されています。 特に、Webサイトで動作するように調整されていません。 これは、サポートする多くのインターネットプロトコルのいずれかを使用して、リモートサーバーと対話するためのものです。

したがって、 wgetは主にWebサイト中心ですが、 cURLは、プレーンバニラインターネットレベルで、より深いレベルで動作するものです。

wgetはWebページを取得でき、Webサーバー上のディレクトリ構造全体を再帰的にナビゲートしてWebサイト全体をダウンロードできます。 また、取得したページのリンクを調整して、リモートWebサーバーの対応するページではなく、ローカルコンピューターのWebページを正しく指すようにすることもできます。

cURLを使用すると、リモートサーバーと対話できます。 それはファイルをアップロードするだけでなく、それらを取得することができます。 cURLは、SOCKS4およびSOCKS5プロキシ、およびプロキシへのHTTPSで機能します。 GZIP、BROTLI、およびZSTD形式の圧縮ファイルの自動解凍をサポートします。 cURLを使用すると、複数の転送を並行してダウンロードすることもできます。

それらの間の重複は、 wgetcURLの両方でWebページを取得し、FTPサーバーを使用できることです。

これは大まかな指標にすぎませんが、 manページの長さを確認することで、2つのツールの相対的な機能セットをある程度理解することができます。 私たちのテストマシンでは、 wgetのマニュアルページの長さは1433行です。 cURLmanページはなんと5296行です。

wgetのクイックピーク

wgetはGNUプロジェクトの一部であるため、すべてのLinuxディストリビューションにプレインストールされているはずです。 それを使用することは、特にその最も一般的な使用法のために簡単です:ウェブページまたはファイルをダウンロードすること。

WebページまたはリモートファイルへのURLを指定してwgetコマンドを使用するだけです。

 wget https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

wgetを使用してWord文書をダウンロードする

ファイルが取得され、元の名前でコンピュータに保存されます。

Word文書をダウンロードするwgetコマンドからの出力

ファイルを新しい名前で保存するには、 -O (出力ドキュメント)オプションを使用します。

 wget -O word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

wgetでファイルをダウンロードし、新しい名前で保存する

取得したファイルは、選択した名前で保存されます。

ダウンロードしたファイルの名前は、コマンドラインで指定された名前に変更されます

Webサイトを取得するときは、 -Oオプションを使用しないでください。 その場合、取得したすべてのファイルが1つに追加されます。

Webサイト全体を取得するには、 -m (ミラー)オプションとWebサイトのホームページのURLを使用します。 また、 --page-requisitesを使用して、Webページを適切にレンダリングするために必要なすべてのサポートファイルもダウンロードされるようにする必要があります。 --convert-linksオプションは、取得したファイル内のリンクを調整して、Webサイトの外部の場所ではなく、ローカルコンピューター上の正しい宛先を指すようにします。

関連:究極のコマンドラインダウンロードツールであるwgetの使用方法

cURLのクイックピーク

cURLは独立したオープンソースプロジェクトです。 Manjaro21とFedora36にプリインストールされていますが、Ubuntu21.04にインストールする必要がありました。

これは、UbuntuにcURLをインストールするためのコマンドです。

 sudo apt install curl 

UbuntuへのcURLのインストール

wgetで行ったのと同じファイルをダウンロードし、同じ名前で保存するには、このコマンドを使用する必要があります。 -o (出力)オプションはcURLでは小文字であることに注意してください。

 curl -o word-file-test.doc https://file-examples.com/wp-content/uploads/2017/02/file-sample_100kB.doc 

cURLを使用してファイルをダウンロードし、新しい名前で保存する

ファイルがダウンロードされます。 ダウンロード中にASCIIプログレスバーが表示されます。

ファイルがダウンロードされ、コマンドラインで指定された名前で保存されます

FTPサーバーに接続してファイルをダウンロードするには、 -u (ユーザー)オプションを使用して、次のようにユーザー名とパスワードのペアを指定します。

 curl -o test.png -u demo:password ftp://test.rebex.net/pub/example/KeyGenerator.png 

cURLを使用してFTPサーバーからファイルをダウンロードする

これにより、テストFTPサーバーからファイルがダウンロードされて名前が変更されます。

cURLを使用したFTPサーバーからのダウンロードの成功

関連: curlを使用してLinuxコマンドラインからファイルをダウンロードする方法

最高はありません

「何をしようとしているの?」と聞かずに「どれを使うべきか」と答えることは不可能です。

wgetcURLの機能を理解すると、それらが競合していないことがわかります。 それらは同じ要件を満たしていないため、同じ機能を提供しようとはしていません。

ウェブページやウェブサイトをダウンロードすることは、 wgetの優位性がどこにあるかです。 それがあなたがしていることなら、 wgetを使ってください。 その他の場合(たとえば、アップロード、または他の多数のプロトコルのいずれかを使用する場合)は、 cURLを使用します。