LinuxでURLからファイルをダウンロードする方法

LinuxでURLからファイルをダウンロードする方法

通常、ファイル拡張子で終わる 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 ページのみがダウンロードされます。

助言がありますか?

答え1

使用

wget "http://some.ip.in.here/website.com/IMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899"

説明: URL に「&」文字が含まれています。Linux などのシステムでは、これによりバックグラウンド プロセスになります。

解決策は、URL を二重引用符 ( ) で囲み、"1 つの引数として扱うことです。

答え2

複雑なURLから適切なファイル名を取得したいだけの場合は、出力ドキュメントオプション。

-O file
--output-document=file

どちらの形式でも機能します。

前述のように、URL 内の特殊文字がコマンド パーサーによって解釈されないようにしてください。

答え3

これを行うには2つの方法がありますカール

この最初の方法では、-OURL のリモート名に基づいてファイルを書き出すフラグを使用します。この場合、ファイルは としてシステムに書き出される可能性が最も高くなりますIMAGENAME.ISO?md5=hUhpyFjk7zEskw06ZhrWAQ&expires=1454811899。URL 値が二重引用符で囲まれていることに注意してください。これは&、 が?Bash コマンドとして誤って解釈される可能性があるためです。

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 に指示します。

関連情報