Как скачать файл по URL в Linux

Как скачать файл по URL в Linux

Обычно загружается файл с 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-образ.

Какие-либо предложения?

решение1

Использовать

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

Объяснение: В URL есть символ "&". В Linux и подобных системах это делает процесс фоновым.

Решение — заключить URL в двойные кавычки ( "), чтобы он рассматривался как один аргумент.

решение2

Если вы просто пытаетесь получить разумное имя файла из сложного URL, вы можете использоватьвыходной документвариант.

-O file
--output-document=file

Любая из этих форм подойдет.

Как отмечалось ранее, убедитесь, что ни один из специальных символов в URL-адресе не интерпретируется анализатором команд.

решение3

Есть два способа сделать это с помощьюЗавиток.

В этом первом методе вы бы установили -Oфлаг для записи файла на основе удаленного имени из URL; в этом случае он, скорее всего, запишет файл в систему как 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";

Так что если вы спросите меня, то второй метод работает лучше всего для большинства обычных случаев. Также обратите внимание на -Lфлаг, используемый в обеих командах; эта команда сообщает Curl следовать любым ссылкам перенаправления, которые может иметь URL-адрес загрузки файла, поскольку во многих случаях файлы на сервисах загрузки перенаправляют несколько раз, прежде чем попасть в целевой файл полезной нагрузки.

Связанный контент