通常、URLがファイル拡張子で終わるファイルをダウンロードします。
Ubuntu ISOをダウンロードするには、簡単です。
wget http://releases.ubuntu.com/14.04.3/ubuntu-14.04.3-desktop-AMD64.iso
しかし、ASP.Net/IISを使用している疑いのあるサイトに出くわしました。
ISOへのリンクは次の形式です(...ポリシーの場合はリンクのコンテンツを削除しました):
http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899
MD5と有効期限がパラメーターとして含まれているため、これをダウンロードする方法がわかりません。したがって、wgetはこのISOではなくWebページのみをダウンロードします。
助言がありますか?
使用する
wget "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899"
説明:URLに「&」文字があります。 Linuxや同様のシステムでは、これによりバックグラウンドプロセスになります。 URLを2つのクォート( ")で囲み、1つの引数として扱われるように解決します。
複雑なURLで適切なファイル名を取得しようとしている場合は、output-documentオプションを使用できます。
-O file
--output-document=file
これらのフォームのいずれかが機能します。
前述のように、URL内の特殊文字がコマンドパーサーによって解釈されていないことを確認してください。
Curl を使用してこれを行うには、2つの方法があります。
この最初の方法では、-O
フラグを使用して、URLからのリモート名に基づいてファイルを書き出します。この場合、ファイルをIMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899
としてシステムに書き出す可能性があります。 &
と?
がBashコマンドとして誤って解釈される可能性があるため、URL値が二重引用符で囲まれていることに注意してください。
curl -O -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899";
その方法は技術的には「機能」しますが、ファイル名はせいぜい混乱します。したがって、この別の方法では、>
の後にURLの後にファイル名が続く出力リダイレクトを使用して、IMAGENAME.ISO
という名前のファイルにファイルの内容を出力します。
curl -L "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899" > "IMAGENAME.ISO";
したがって、私に言わせれば、2番目の方法はほとんどの平均的な使用に最適です。また、両方のコマンドで-L
フラグが使用されていることにも注意してください。これらのコマンドは、ダウンロードサービスのファイルが宛先のペイロードファイルに到達する前に数回リダイレクトされることが多いため、ファイルダウンロードURLにあるリダイレクトリンクをたどるようCurlに指示します。