Bash

Linux – curlでWebからファイルをダウンロードして保存する方法

curlコマンドを使用してWebからファイルをダウンロードし、保存するには、curl -oまたはcurl -Oオプションを利用します。

-oは保存するファイル名を指定でき、-OはURLのファイル名をそのまま使用します。

例えば、curl -o example.html https://example.comexample.htmlとして保存し、curl -O https://example.com/file.txtfile.txtとして保存します。

curlを使った基本的なダウンロード方法

curlは、コマンドラインからURLを指定してデータを取得するためのツールです。

Webからファイルをダウンロードする際に非常に便利です。

ここでは、基本的な使い方を紹介します。

基本的なコマンド

ファイルをダウンロードするための基本的なコマンドは以下の通りです。

curl -O http://example.com/file.txt

このコマンドでは、指定したURLからfile.txtというファイルをダウンロードし、現在のディレクトリに保存します。

-Oオプションは、URLのファイル名をそのまま使用して保存することを意味します。

コマンドの実行結果

上記のコマンドを実行すると、以下のような出力が表示されます。

file.txt                                100%   123.45KB  123.45KB/s   0:00:01 (xfr#1, to-chk=0/1)

この出力は、ダウンロードが成功したことを示しています。

ファイル名、ダウンロードサイズ、速度、所要時間などの情報が表示されます。

追加オプション

curlには、さまざまなオプションがあります。

以下は、よく使われるオプションの一部です。

オプション説明
-OURLのファイル名で保存
-o <file>指定したファイル名で保存
-Lリダイレクトを追従する
-u <user:password>認証情報を指定する

これらのオプションを組み合わせることで、より柔軟にファイルをダウンロードすることができます。

複数ファイルのダウンロード方法

curlを使用して複数のファイルを一度にダウンロードすることも可能です。

ここでは、複数のファイルを効率的にダウンロードする方法を紹介します。

複数のURLを指定する

複数のファイルをダウンロードする場合、URLをスペースで区切って指定することができます。

以下のコマンドを使用します。

curl -O http://example.com/file1.txt http://example.com/file2.txt http://example.com/file3.txt

このコマンドでは、file1.txtfile2.txtfile3.txtの3つのファイルを同時にダウンロードします。

コマンドの実行結果

上記のコマンドを実行すると、以下のような出力が表示されます。

file1.txt                              100%   123.45KB  123.45KB/s   0:00:01 (xfr#1, to-chk=2/3)
file2.txt                              100%   234.56KB  234.56KB/s   0:00:01 (xfr#2, to-chk=1/3)
file3.txt                              100%   345.67KB  345.67KB/s   0:00:01 (xfr#3, to-chk=0/3)

この出力では、各ファイルのダウンロード状況が表示されます。

ファイル名、ダウンロードサイズ、速度、所要時間などの情報がそれぞれのファイルについて示されます。

URLリストを使用する

複数のURLを手動で指定するのが面倒な場合、URLをリストファイルに保存し、そのファイルを指定してダウンロードすることもできます。

リストファイルの例は以下の通りです。

http://example.com/file1.txt
http://example.com/file2.txt
http://example.com/file3.txt

このリストファイルをurls.txtと名付けた場合、以下のコマンドで一括ダウンロードが可能です。

curl -O -K urls.txt

コマンドの実行結果

リストファイルを使用した場合も、同様に各ファイルのダウンロード状況が表示されます。

file1.txt                              100%   123.45KB  123.45KB/s   0:00:01 (xfr#1, to-chk=2/3)
file2.txt                              100%   234.56KB  234.56KB/s   0:00:01 (xfr#2, to-chk=1/3)
file3.txt                              100%   345.67KB  345.67KB/s   0:00:01 (xfr#3, to-chk=0/3)

このように、curlを使えば複数のファイルを簡単にダウンロードすることができます。

リストファイルを活用することで、より効率的に作業を進めることが可能です。

ダウンロード時の進捗表示と制御

curlを使用してファイルをダウンロードする際、進捗状況を確認することができます。

また、進捗表示のスタイルや制御方法もカスタマイズ可能です。

ここでは、進捗表示のオプションとその制御方法について説明します。

デフォルトの進捗表示

curlを実行すると、デフォルトで進捗状況が表示されます。

以下のコマンドを実行してみましょう。

curl -O http://example.com/largefile.zip

このコマンドを実行すると、ダウンロード中に以下のような進捗表示が行われます。

largefile.zip                          100%  1.23MB  1.23MB/s   0:00:01 (xfr#1, to-chk=0/1)

進捗表示のスタイルを変更する

進捗表示のスタイルを変更するには、-#オプションを使用します。

このオプションを指定すると、プログレスバーが表示されます。

curl -# -O http://example.com/largefile.zip

このコマンドを実行すると、以下のようなプログレスバーが表示されます。

######################################################################## 100.0%

進捗表示を無効にする

進捗表示が不要な場合は、-sオプションを使用してサイレントモードで実行することができます。

これにより、進捗状況やエラーメッセージが表示されなくなります。

curl -s -O http://example.com/largefile.zip

このコマンドを実行すると、何も表示されずにダウンロードが行われます。

進捗表示の詳細情報を表示する

進捗状況に加えて、詳細な情報を表示したい場合は、-wオプションを使用します。

このオプションを使うことで、ダウンロードの詳細情報をカスタマイズして表示できます。

curl -O -w "ダウンロード完了: %{size_download} バイト\n" http://example.com/largefile.zip

このコマンドを実行すると、ダウンロードが完了した後に、ダウンロードしたファイルのサイズが表示されます。

進捗表示の制御まとめ

オプション説明
-#プログレスバーを表示
-sサイレントモード(進捗表示なし)
-wダウンロードの詳細情報を表示

これらのオプションを活用することで、curlを使ったファイルダウンロード時の進捗表示を自分の好みに合わせて制御することができます。

認証が必要なファイルのダウンロード

Webサイトからファイルをダウンロードする際、認証が必要な場合があります。

curlを使用すると、基本的な認証やその他の認証方式を利用してファイルをダウンロードすることができます。

ここでは、認証が必要なファイルのダウンロード方法を説明します。

基本認証を使用する

基本認証が必要な場合、-uオプションを使用してユーザー名とパスワードを指定します。

以下のコマンドを実行してみましょう。

curl -u username:password -O http://example.com/protectedfile.txt

このコマンドでは、usernamepasswordを使用して認証を行い、protectedfile.txtをダウンロードします。

コマンドの実行結果

上記のコマンドを実行すると、認証が成功すれば以下のような出力が表示されます。

protectedfile.txt                      100%   456.78KB  456.78KB/s   0:00:01 (xfr#1, to-chk=0/1)

認証に失敗した場合は、401 Unauthorizedエラーが表示されます。

認証情報をファイルに保存する

認証情報をコマンドラインに直接書くのが不安な場合、認証情報を含むファイルを作成し、-nオプションを使用して指定することができます。

ファイルの内容は以下のようになります。

user=username
password=password

このファイルをauth.txtと名付けた場合、以下のコマンドでダウンロードが可能です。

curl -n -O http://example.com/protectedfile.txt --config auth.txt

トークン認証を使用する

APIなどでトークン認証が必要な場合、-Hオプションを使用してAuthorizationヘッダーを追加します。

以下のコマンドを実行します。

curl -H "Authorization: Bearer your_token" -O http://example.com/protectedfile.txt

このコマンドでは、your_tokenを使用して認証を行い、ファイルをダウンロードします。

認証が必要なファイルのダウンロードまとめ

認証方式コマンド例
基本認証curl -u username:password -O URL
認証情報ファイルcurl -n -O URL --config auth.txt
トークン認証curl -H "Authorization: Bearer your_token" -O URL

これらの方法を使用することで、認証が必要なファイルをcurlで簡単にダウンロードすることができます。

必要に応じて、適切な認証方式を選択してください。

プロキシを利用したダウンロード

curlを使用してファイルをダウンロードする際、プロキシサーバーを経由することができます。

プロキシを利用することで、特定のネットワーク環境やセキュリティ要件に対応することが可能です。

ここでは、プロキシを利用したダウンロード方法について説明します。

HTTPプロキシを指定する

HTTPプロキシを使用する場合、-xオプションを使ってプロキシサーバーのアドレスを指定します。

以下のコマンドを実行してみましょう。

curl -x http://proxy.example.com:8080 -O http://example.com/file.txt

このコマンドでは、proxy.example.comの8080ポートを使用してプロキシ経由でfile.txtをダウンロードします。

コマンドの実行結果

上記のコマンドを実行すると、プロキシを通じてファイルがダウンロードされ、以下のような出力が表示されます。

file.txt                                100%   123.45KB  123.45KB/s   0:00:01 (xfr#1, to-chk=0/1)

認証付きプロキシの利用

認証が必要なプロキシを使用する場合、-Uオプションを使ってユーザー名とパスワードを指定します。

以下のコマンドを実行します。

curl -x http://proxy.example.com:8080 -U username:password -O http://example.com/file.txt

このコマンドでは、プロキシサーバーに対してusernamepasswordを使用して認証を行い、ファイルをダウンロードします。

SOCKSプロキシを指定する

SOCKSプロキシを使用する場合は、--socks5オプションを使用します。

以下のコマンドを実行してみましょう。

curl --socks5 socks5://proxy.example.com:1080 -O http://example.com/file.txt

このコマンドでは、SOCKS5プロキシを経由してファイルをダウンロードします。

プロキシ設定の確認

プロキシ設定が正しく行われているか確認するためには、以下のコマンドを使用してプロキシの情報を表示できます。

curl -x http://proxy.example.com:8080 -I http://example.com

このコマンドを実行すると、HTTPヘッダー情報が表示され、プロキシ経由での接続が確認できます。

プロキシを利用したダウンロードまとめ

プロキシタイプコマンド例
HTTPプロキシcurl -x http://proxy.example.com:8080 -O URL
認証付きプロキシcurl -x http://proxy.example.com:8080 -U username:password -O URL
SOCKSプロキシcurl --socks5 socks5://proxy.example.com:1080 -O URL

これらの方法を使用することで、プロキシを経由してファイルをダウンロードすることができます。

必要に応じて、適切なプロキシ設定を選択してください。

HTTPS通信と証明書の扱い

curlを使用してHTTPS通信を行う際、SSL/TLS証明書の検証が行われます。

これにより、安全な通信が確保されますが、場合によっては証明書の扱いに注意が必要です。

ここでは、HTTPS通信と証明書の扱いについて説明します。

HTTPS通信の基本

HTTPS通信を行う場合、通常のHTTPと同様にURLを指定するだけで、curlは自動的にHTTPSプロトコルを使用します。

以下のコマンドを実行してみましょう。

curl -O https://example.com/securefile.txt

このコマンドでは、securefile.txtをHTTPS経由でダウンロードします。

証明書が正当であれば、問題なくダウンロードが行われます。

証明書の検証を無効にする

自己署名証明書や信頼されていない証明書を使用している場合、curlはデフォルトで接続を拒否します。

この場合、-kまたは--insecureオプションを使用して証明書の検証を無効にすることができます。

curl -k -O https://example.com/securefile.txt

このコマンドを実行すると、証明書の検証をスキップしてファイルをダウンロードしますが、セキュリティリスクがあるため注意が必要です。

特定の証明書を指定する

特定のCA証明書を使用して接続する場合、--cacertオプションを使用して証明書ファイルを指定できます。

以下のコマンドを実行します。

curl --cacert /path/to/certificate.crt -O https://example.com/securefile.txt

このコマンドでは、指定した証明書を使用してHTTPS接続を行います。

これにより、特定の証明書を信頼することができます。

証明書の情報を表示する

ダウンロードする際に使用される証明書の情報を確認するには、-vオプションを使用して詳細な出力を表示します。

以下のコマンドを実行します。

curl -v https://example.com/securefile.txt

このコマンドを実行すると、SSL/TLSハンドシェイクの詳細や証明書の情報が表示されます。

HTTPS通信と証明書の扱いまとめ

操作内容コマンド例
HTTPS通信の基本curl -O https://example.com/securefile.txt
証明書の検証を無効にするcurl -k -O https://example.com/securefile.txt
特定の証明書を指定するcurl --cacert /path/to/certificate.crt -O https://example.com/securefile.txt
証明書の情報を表示するcurl -v https://example.com/securefile.txt

これらの方法を使用することで、HTTPS通信を安全に行い、証明書の扱いを適切に管理することができます。

セキュリティを考慮しながら、必要に応じて適切なオプションを選択してください。

エラー時の対処法

curlを使用してファイルをダウンロードする際、さまざまなエラーが発生することがあります。

ここでは、一般的なエラーとその対処法について説明します。

1. 404 Not Found

エラー内容: 指定したURLが存在しない場合に表示されます。

対処法:

  • URLが正しいか確認します。
  • リンクが変更されていないか、またはファイルが削除されていないかを確認します。
curl -O http://example.com/nonexistentfile.txt

出力例:

404 Not Found

2. 403 Forbidden

エラー内容: アクセス権限がない場合に表示されます。

対処法:

  • 認証が必要な場合は、適切な認証情報を指定します。
  • アクセス制限がかかっている場合は、管理者に問い合わせます。
curl -u username:password -O http://example.com/protectedfile.txt

出力例:

403 Forbidden

3. 500 Internal Server Error

エラー内容: サーバー側で問題が発生した場合に表示されます。

対処法:

  • サーバーの状態を確認します。
  • 一時的な問題である可能性があるため、時間をおいて再試行します。
curl -O http://example.com/servererrorfile.txt

出力例:

500 Internal Server Error

4. SSL/TLSエラー

エラー内容: SSL/TLS証明書の検証に失敗した場合に表示されます。

対処法:

  • -kオプションを使用して証明書の検証を無効にします(セキュリティリスクに注意)。
  • 正しいCA証明書を指定する場合は、--cacertオプションを使用します。
curl -k -O https://example.com/securefile.txt

出力例:

SSL certificate problem: unable to get local issuer certificate

5. タイムアウトエラー

エラー内容: サーバーからの応答が遅すぎる場合に表示されます。

対処法:

  • ネットワーク接続を確認します。
  • --connect-timeoutオプションを使用してタイムアウト時間を設定します。
curl --connect-timeout 10 -O http://example.com/slowfile.txt

出力例:

curl: (28) Connection timed out after 10001 milliseconds

エラー時のデバッグ情報

エラーの詳細を確認するためには、-vオプションを使用して詳細な出力を表示します。

これにより、HTTPヘッダーやエラーメッセージの詳細が確認できます。

curl -v http://example.com/file.txt

エラー時の対処法まとめ

エラー内容対処法
404 Not FoundURLを確認する
403 Forbidden認証情報を指定する
500 Internal Server Errorサーバーの状態を確認する
SSL/TLSエラー証明書の検証を無効にするまたはCA証明書を指定する
タイムアウトエラーネットワーク接続を確認し、タイムアウトを設定する

これらの対処法を参考にして、curlを使用したファイルダウンロード時のエラーに適切に対処してください。

まとめ

この記事では、curlを使用してWebからファイルをダウンロードする方法について、基本的な使い方から認証、プロキシ、HTTPS通信、エラー時の対処法まで幅広く解説しました。

これにより、さまざまな状況に応じたファイルダウンロードの手法を理解し、実践するための具体的な手順を知ることができました。

今後は、これらの知識を活用して、より効率的にファイルをダウンロードし、必要に応じて適切なオプションを選択して作業を進めてみてください。

関連記事

Back to top button