curlでファイルをダウンロードする
curlの-oと-Oフラグを使ったファイルダウンロード方法を解説。中断されたダウンロードの再開、帯域幅制限、プログレスバー表示、ファイル整合性の検証方法を学びましょう。
General
詳細な説明
curlでファイルをダウンロードする
curlはWebからファイルをダウンロードする際に頻繁に使用されます。レジューム可能なダウンロード、帯域幅制限、プログレス表示、保護されたリソースへの認証をサポートしています。
基本的なダウンロード
-o でカスタムファイル名で保存します:
curl -o myfile.zip https://example.com/releases/v1.0.zip
-O でリモートのファイル名のまま保存します:
curl -O https://example.com/releases/v1.0.zip
複数ファイルのダウンロード
curl -O https://example.com/file1.zip -O https://example.com/file2.zip
または波括弧展開を使います:
curl -O "https://example.com/files/data-{01,02,03,04,05}.csv"
中断されたダウンロードの再開
-C - を使って、前回のダウンロードが中断した地点から自動的に再開します:
curl -C - -O https://example.com/large-file.iso
-C - フラグは、curlに正しい再開オフセットを自動的に判断するよう指示します。
帯域幅制限
--limit-rate でダウンロード速度を制限します:
curl --limit-rate 1M -O https://example.com/large-file.iso
サフィックス: K(キロバイト)、M(メガバイト)、G(ギガバイト)/秒をサポートします。
プログレスバー
デフォルトの統計表示をシンプルなプログレスバーに置き換えます:
curl -# -O https://example.com/file.zip
またはスクリプト用にすべての出力を抑制します:
curl -s -O https://example.com/file.zip
条件付きダウンロード
ローカルコピーよりリモートファイルが新しい場合のみダウンロードします:
curl -z localfile.zip -O https://example.com/file.zip
ダウンロードの整合性検証
curlとチェックサム検証を組み合わせます:
curl -sO https://example.com/file.tar.gz
curl -s https://example.com/file.tar.gz.sha256 | sha256sum -c -
ダウンロード時のリダイレクト追跡
多くのダウンロードURL(GitHubリリースなど)はリダイレクトします。必ず -L を使いましょう:
curl -LO https://github.com/user/repo/releases/latest/download/app.tar.gz
スクリプトでのベストプラクティス
curl -fsSL --retry 3 --connect-timeout 10 -o app.tar.gz \
https://example.com/app.tar.gz
この組み合わせは、リトライ付きでサイレントにダウンロードし、HTTPエラーで失敗し、リダイレクトを追跡します。
ユースケース
システム管理者がデプロイスクリプトを作成する際に、中断された転送の再開をサポートしながら、サーバーからリリースアーティファクトを確実にダウンロードする必要がある場合に使用します。