cURL を使用してコマンド ラインからリモート ファイルをダウンロードする
目次:
強力な curl コマンド ライン ツールを使用して、ほぼすべてのリモート サーバーからファイルをダウンロードできます。長年のコマンド ライン ユーザーは、これがさまざまな状況で役立つことを知っていますが、シンプルにするために、curl を使用してファイルをダウンロードする方が、多くの場合、GUI 側から Web ブラウザーまたは FTP クライアントを使用するよりも迅速な代替手段であることがわかります。 Mac OS X (または Linux)。これはローカルの状況で役立ちますが、SSH 経由で接続されているときにリモートの Mac に何かをダウンロードする必要がある場合に特に価値があります。
このチュートリアルでは、主に 2 つの一般的な HTTP および SFTP プロトコルからファイルをダウンロードすることに焦点を当てますが、cURL はさらに多くのプロトコルをサポートしていることに注意してください。 curl は簡単に使用できますが、コマンド ラインに関するある程度の知識があることをお勧めします。
curl -Oで完全一致ファイルをダウンロード
curl で大文字の -O フラグを使用すると、正確なファイル名を維持しながらリモート サーバーからファイルをダウンロードします。この基本的な構文は次のとおりです。
curl -O
これは、指定された URL ファイルの名前が「sample.zip」の場合、「sample.zip」というファイル名でダウンロードされ、ファイルの名前が「LongExampleFileNameForOSXDaily-v- 1-3-51-revision-515b12-readme.txt」をリモート サーバーに保存すると、その正確な名前でローカル マシンに保存されます。長いファイル名は、多くの場合、-O フラグよりも -o フラグを使用した方が適切に処理されます。これについては、すぐに説明します。
通常の読者は、m3u ストリーミング ファイルから実際のオーディオ コンテンツを抽出する方法を説明する際に curl -O コマンドを使用したことを思い出すかもしれません。
curl でダウンロードを開始すると、転送された割合、ダウンロードに費やされた時間、残りの時間、および転送速度が表示されます。
スクリーンショットは、下に貼り付けた例よりも優れた表現を提供しますが、次のようになります:
% 合計 % 受信 % Xferd 平均速度 時間 時間 現在の Dload アップロード 合計消費 左速度 100 10505 100 10505 0 0 79741 0 --:--:-- --:--:-- --:--:-- 142k
転送速度が表示されているので、curl の出力を /dev/null にリダイレクトし、それを使用してインターネット接続速度をテストできますが、wget コマンドの方が転送バーを読みやすく追跡しやすいため、wget の方が優れていますそのタスクに適しています。
curl -o を使用して別の名前でリモート ファイルを保存する
小文字の -o フラグを使用すると、リモート サーバーでの名前とは異なるファイル名をダウンロード ファイルに指定できます。これは、長いファイル名を減らしたり、何かにラベルを付けたりして、自分で見つけやすくするのに役立ちます.一般的な構文は次のとおりです。
curl -o
たとえば、長いフルネームを付けずにAppleサーバーにリストされているiOS IPSWファイルを保存したい場合は、次のように使用できます:
curl -o iPhone5C-704.ipsw http://appldnld.apple.com/iOS7/031-1828.20131114.P3wE4/iPhone5, 3_7.0.4_11B554a_Restore.ipsw
これにより、「iPhone5、3_7.0.4_11B554a_Restore.ipsw」ファイルがダウンロードされますが、より意味のある「iPhone5C-704.ipsw」として短い名前が付けられます。
ファイルを現在の作業ディレクトリに保存したくない場合は、次のようにファイル名の一部としてパスを指定します:
curl -o ~/Desktop/localexample.dmg http://url-to-file/example.dmg
curlで複数のファイルを同時にダウンロードする
cURL は同時に複数のファイルを簡単にダウンロードできます。次のように複数の URL を指定するだけです:
curl -O
異なる名前のファイル、異なるサーバーでホストされているファイル、または異なるディレクトリ パス内にあるファイルの場合は、完全な URL を使用します。例:
curl -O http://ftp.gnu.org/gnu/Licenses/fdl-1.1.txt http://ftp.gnu.org/gnu/ Licenses/lgpl-2.1.txt http://ftp.gnu.org/gnu/GNUinfo/Audio/index.txt
一方、ダウンロードするファイル名がインクリメンタル ネーミングを使用している場合は、次のように括弧を使用してダウンロード範囲を指定できます:
curl -O http://ftp.gnu.org/gnu/Licenses/fd1-1.txt
これにより、ファイル fdl-1.1.txt、fd1-1.2.txt、および fd1-1.3.txt がすべて同時に取得され、一意の URL をそれぞれ指定する必要がなくなります。もちろん、これはファイルが同じディレクトリにあり、同じドメインにある場合にのみ機能します。
curlによる認証
また、-u フラグを使用して cURL で認証を渡すこともできます:
curl -u user:pass -O ftp://remote_url/file-to-download.zip
ユーザー名とパスワードを指定して -u を使用すると、bash 履歴はパスワードを平文で保存することに注意してください。したがって、これはほとんどの状況で推奨されません。 「curl」の前にスペースを置くことで、これを回避できます。コマンドの前にスペースバーを使用しない場合は、後で安全のためにコマンド履歴を空にすることをお勧めします。
サポートされている curl プロトコルと HTTP および FTP 以外の用途
.さらに、curl は PUT および POST リクエスト、Cookie、プロキシ、トンネル、ダウンロードの再開、さらには HTTP ヘッダー情報の取得やユーザー エージェントの変更 (効果的なスプーフィング) にも使用できることがわかります。専用の Web ブラウザを使用する必要はありません。
.