web-dev-qa-db-ja.com

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ページのみをダウンロードします。

助言がありますか?

2
Cybex

使用する

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

説明:URLに「&」文字があります。 Linuxや同様のシステムでは、これによりバックグラウンドプロセスになります。 URLを2つのクォート( ")で囲み、1つの引数として扱われるように解決します。

5
user871199

複雑なURLで適切なファイル名を取得しようとしている場合は、output-documentオプションを使用できます。

-O file
--output-document=file

これらのフォームのいずれかが機能します。

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

3
Clark Wierda

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

0
JakeGould