質問: 通常、wget を使用してファイルをダウンロードします。一部のシステムでは、wget がインストールされておらず、curl のみが使用可能です。 curl を使用してリモート ファイルをダウンロードする方法を簡単な例で説明してもらえますか? curl と wget に違いはありますか?
答え: 大まかに言うと、wget と curl はどちらも同じことを行うコマンド ライン ユーティリティです。
- どちらも、FTP と HTTP(s) を使用してファイルをダウンロードするために使用できます。
- curl と wget を使用して HTTP POST リクエストを送信することもできます
- ただし、curl は、プログラマーが独自のコード内で使用できる API を提供します。 curl は、クロスプラットフォーム ライブラリである libcurl を使用します。
- wget は API を持たない単なるコマンドライン ツールです。
- Curl は、wget がサポートしていない多くのプロトコルもサポートしています。例:SCP、SFTP、TFTP、TELNET、LDAP(S)、FILE、POP3、IMAP、SMTP、RTMP、RTSP。
- wget を使用することには大きな利点があります。 wget は再帰的なダウンロードをサポートしていますが、curl はサポートしていません。
Wget の例
次の例では、ファイルをダウンロードし、リモート サーバーと同じ名前で保存します。
wget http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
次の例では、ファイルをダウンロードし、リモート サーバーとは別の名前で保存します。これは、以下の例に示すように、リモート URL の URL にファイル名が含まれていない場合に役立ちます。
wget -O taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701
その他の wget の例:15 の素晴らしい例を含む究極の Wget ダウンロード ガイド
カールの例
$ curl -O http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 28 3762k 28 1085k 0 0 72771 0 0:00:52 0:00:15 0:00:37 54267
オプション -O (大文字の O) は重要です。これがないと、curl はダウンロードしたファイルを stdout にダンプし始めます。 -O を使用すると、リモート サーバーと同じ名前のファイルがダウンロードされます。上記の例では、strx25-0.9.2.1.tar.bz2 をダウンロードしているため、ダウンロードされるファイルも同じ名前になります。
-O の代わりに、以下に示すように「-remote-name」も指定できます。どちらも同じです。
$ curl --remote-name http://www.openss7.org/repos/tarballs/strx25-0.9.2.1.tar.bz2
curl のダウンロード中に、次の有用な情報が得られます:
- % – 現在完了しているダウンロードの合計 %。 100%になったらダウンロード完了です。上記の例では、ファイルの 28% しかダウンロードされていません。
- 合計 – ファイルの合計サイズ
- 受信済み – これまでにダウンロードされたファイルの合計サイズ。上記の例では、これまでに 1085k をダウンロードしました (合計 3762k のうち)
- Xferd – これは、ファイルをリモート サーバーにアップロードするときに使用されます。アップロード中、これまでにアップロードされたファイルの合計サイズが表示されます。ファイルをダウンロードしているため、この例では 0 です。
- Average Speed Dload – 平均ダウンロード速度を示します。
- アップロードの平均速度 – ファイルのアップロード中の平均アップロード速度を示します
- 合計時間 – これは、現在のダウンロード (またはアップロード) 速度に基づいて、ファイル全体をダウンロード (またはアップロード) するのにかかる合計時間を示します。この例では、このファイルをダウンロードするのに合計で約 52 秒かかります。
- Time Spend – curl がこれまでにファイルのダウンロード (またはアップロード) に費やした時間。この例では、これまでに 15 秒かかりました。
- 残り時間 – 「合計時間」 – 「経過時間」に基づいて計算されます。
- 現在の速度 – 現在のダウンロード/アップロード速度を示します。これを Average Spped Dload/UPload と比較して、システムの現在のダウンロードの速さまたは遅さを確認してください。
ファイルをダウンロードして、リモート サーバーのファイル名とは異なる名前で保存する場合は、以下に示すように -o (小文字の o) を使用します。これは、以下の例に示すように、リモート URL の URL にファイル名が含まれていない場合に役立ちます。
$ curl -o taglist.zip http://www.vim.org/scripts/download_script.php?src_id=7701 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 50243 100 50243 0 0 170k 0 --:--:-- --:--:-- --:--:-- 400k
上記の例では、リモート URL にファイル名がなく、パラメータを渡す php スクリプトを呼び出すだけです。ただし、ファイルはダウンロードされ、ローカル システムに taglist.zip として保存されます。 -o の代わりに、「–output」も指定できます。
その他の curl の例:15 の実用的な Linux cURL コマンドの例