cURLでファイルをダウンロードする方法
クライアントURL(cURL)は、システム間でデータを転送するためのライブラリおよびコマンドラインユーティリティです。 多くのプロトコルをサポートし、多くのUnixライクなオペレーティングシステムにデフォルトでインストールされる傾向があります。 一般に入手可能であるため、特にサーバー環境でローカルシステムにファイルをダウンロードする必要がある場合に最適です。
このチュートリアルでは、 curl
Webサーバーからテキストファイルをダウンロードするコマンド。 その内容を表示し、ローカルに保存して、 curl
ファイルが移動した場合にリダイレクトを追跡します。
インターネットからファイルをダウンロードするのは危険な場合があるため、信頼できるソースからダウンロードしていることを確認してください。 このチュートリアルでは、DigitalOceanからファイルをダウンロードし、ダウンロードしたファイルは実行しません。
ステップ1—リモートファイルを取得する
箱から出して、コマンドライン引数なしで、 curl
コマンドはファイルをフェッチし、その内容を標準出力に表示します。
ダウンロードして試してみましょう robots.txt
Digitalocean.com からのファイル:
- curl https://www.digitalocean.com/robots.txt
画面にファイルの内容が表示されます。
OutputUser-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
オプション:
- 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
指図:
- cat robots.txt
このファイルには、以前に見たものと同じ内容が含まれています。
OutputUser-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
ファイル:
- 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
ダウンロードしたファイルであることを確認するには:
- cat do-bots.txt
内容は同じです:
OutputUser-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
フラグ。ファイルの内容ではなく、リクエストヘッダーを表示します。
- curl -I www.digitalocean.com/robots.txt
出力は、URLがリダイレクトされたことを示しています。 出力の最初の行は、それが移動されたことを示し、 Location
行はあなたにどこを教えます:
OutputHTTP/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
リダイレクトが発生するたびに、新しい場所へのリクエストをやり直します。 試してみる:
- curl -L www.digitalocean.com/robots.txt
今回は、次のように出力が表示されます。 curl
リダイレクトに従いました:
OutputUser-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
ファイルをローカルシステムにダウンロードするための前述の引数のいくつかを含む引数:
- curl -L -o do-bots.txt www.digitalocean.com/robots.txt
警告:オンラインの多くのリソースでは、使用するように求められます curl
スクリプトをダウンロードして実行します。 ダウンロードしたスクリプトを実行する前に、実行可能にして実行する前に、スクリプトの内容を確認することをお勧めします。 使用 less
コードを確認して、実行したいものであることを確認するコマンド。
結論
curl
リモートシステムからファイルをすばやくダウンロードできます。 curl
多くの異なるプロトコルをサポートし、データを送受信するためのリモートAPIとの対話など、より複雑なWebリクエストを作成することもできます。
詳細については、のマニュアルページを参照してください。 curl
実行することによって man curl
.