開発者ドキュメント

cURLでファイルをダウンロードする方法

クライアントURL(cURL)は、システム間でデータを転送するためのライブラリおよびコマンドラインユーティリティです。 多くのプロトコルをサポートし、多くのUnixライクなオペレーティングシステムにデフォルトでインストールされる傾向があります。 一般に入手可能であるため、特にサーバー環境でローカルシステムにファイルをダウンロードする必要がある場合に最適です。

このチュートリアルでは、 curl Webサーバーからテキストファイルをダウンロードするコマンド。 その内容を表示し、ローカルに保存して、 curl ファイルが移動した場合にリダイレクトを追跡します。

インターネットからファイルをダウンロードするのは危険な場合があるため、信頼できるソースからダウンロードしていることを確認してください。 このチュートリアルでは、DigitalOceanからファイルをダウンロードし、ダウンロードしたファイルは実行しません。

ステップ1—リモートファイルを取得する

箱から出して、コマンドライン引数なしで、 curl コマンドはファイルをフェッチし、その内容を標準出力に表示します。

ダウンロードして試してみましょう robots.txt Digitalocean.com からのファイル:

  1. curl https://www.digitalocean.com/robots.txt

画面にファイルの内容が表示されます。

Output
User-agent: * Disallow: sitemap: https://www.digitalocean.com/sitemap.xml sitemap: https://www.digitalocean.com/community/main_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/questions_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/users_sitemap.xml.gz

与える curl URLを使用すると、リソースが取得され、その内容が表示されます。

リモートファイルの保存

ファイルを取得してその内容を表示することはすべてうまくいきますが、実際にファイルをシステムに保存したい場合はどうでしょうか。

ダウンロード元のサーバーと同じファイル名でリモートファイルをローカルシステムに保存するには、 --remote-name 引数、またはを使用します -O オプション:

  1. curl -O https://www.digitalocean.com/robots.txt

ファイルがダウンロードされます:

Output
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 286 0 286 0 0 5296 0 --:--:-- --:--:-- --:--:-- 5296

ファイルの内容を表示する代わりに、 curl テキストベースの進行状況メーターを表示し、ファイルをリモートファイルの名前と同じ名前で保存します。 あなたはで物事をチェックすることができます cat 指図:

  1. cat robots.txt

このファイルには、以前に見たものと同じ内容が含まれています。

Output
User-agent: * Disallow: sitemap: https://www.digitalocean.com/sitemap.xml sitemap: https://www.digitalocean.com/community/main_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/questions_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/users_sitemap.xml.gz

次に、ダウンロードしたファイルのファイル名を指定してみましょう。

ステップ2—特定のファイル名でリモートファイルを保存する

リモートサーバー上のファイルと同じ名前のローカルファイルがすでにある可能性があります。

同じ名前のローカルファイルを上書きしないようにするには、 -o また --output 引数の後に、コンテンツを保存するローカルファイルの名前が続きます。

次のコマンドを実行して、リモートをダウンロードします robots.txt ローカル名のファイル do-bots.txt ファイル:

  1. curl -o do-bots.txt https://www.digitalocean.com/robots.txt

もう一度、進行状況バーが表示されます。

Output
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 286 0 286 0 0 6975 0 --:--:-- --:--:-- --:--:-- 7150

今使用します cat の内容を表示するコマンド do-bots.txt ダウンロードしたファイルであることを確認するには:

  1. cat do-bots.txt

内容は同じです:

Output
User-agent: * Disallow: sitemap: https://www.digitalocean.com/sitemap.xml sitemap: https://www.digitalocean.com/community/main_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/questions_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/users_sitemap.xml.gz

デフォルトでは、 curl はリダイレクトに従わないため、ファイルが移動すると、期待どおりの結果が得られない可能性があります。 それを修正する方法を見てみましょう。

ステップ3—リダイレクトに従う

これまでのところ、すべての例には、以下を含む完全修飾URLが含まれています。 https:// プロトコル。 たまたまフェッチしようとした場合 robots.txt ファイルと指定のみ www.digitalocean.com、DigitalOceanはからのリクエストをリダイレクトするため、出力は表示されません。 http://https://:

これを確認するには、 -I フラグ。ファイルの内容ではなく、リクエストヘッダーを表示します。

  1. curl -I www.digitalocean.com/robots.txt

出力は、URLがリダイレクトされたことを示しています。 出力の最初の行は、それが移動されたことを示し、 Location 行はあなたにどこを教えます:

Output
HTTP/1.1 301 Moved Permanently Cache-Control: max-age=3600 Cf-Ray: 65dd51678fd93ff7-YYZ Cf-Request-Id: 0a9e3134b500003ff72b9d0000000001 Connection: keep-alive Date: Fri, 11 Jun 2021 19:41:37 GMT Expires: Fri, 11 Jun 2021 20:41:37 GMT Location: https://www.digitalocean.com/robots.txt Server: cloudflare . . .

あなたが使うことができます curl 手動で別のリクエストを行うか、 --location また -L 伝える引数 curl リダイレクトが発生するたびに、新しい場所へのリクエストをやり直します。 試してみる:

  1. curl -L www.digitalocean.com/robots.txt

今回は、次のように出力が表示されます。 curl リダイレクトに従いました:

Output
User-agent: * Disallow: sitemap: https://www.digitalocean.com/sitemap.xml sitemap: https://www.digitalocean.com/community/main_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/questions_sitemap.xml.gz sitemap: https://www.digitalocean.com/community/users_sitemap.xml.gz

あなたは組み合わせることができます -L ファイルをローカルシステムにダウンロードするための前述の引数のいくつかを含む引数:

  1. curl -L -o do-bots.txt www.digitalocean.com/robots.txt

警告:オンラインの多くのリソースでは、使用するように求められます curl スクリプトをダウンロードして実行します。 ダウンロードしたスクリプトを実行する前に、実行可能にして実行する前に、スクリプトの内容を確認することをお勧めします。 使用 less コードを確認して、実行したいものであることを確認するコマンド。

結論

curl リモートシステムからファイルをすばやくダウンロードできます。 curl 多くの異なるプロトコルをサポートし、データを送受信するためのリモートAPIとの対話など、より複雑なWebリクエストを作成することもできます。

詳細については、のマニュアルページを参照してください。 curl 実行することによって man curl.

モバイルバージョンを終了