Загрузите ZIP-файл с помощью команды curl


33

Как я могу скачать ZIP файл с помощью команды curl? Я пытался curl -sO, но произошла ошибка. Я хочу скачать zip-файл с адреса: http://github.com/ziyaddin/xampp/archive/master.zip

но не могу Что я должен печатать?


Что за сообщение об ошибке?
Дэвид Фёрстер

Ответы:



20

Попробуйте wget вместо curl: wget http://github.com/ziyaddin/xampp/archive/master.zip


1
Может ли downvoter объяснить? Или другой постер?
don.joey

4
Не могли бы вы объяснить, почему wgetвместо curl?
Хорхе Букаран

1
меньше командных строк (если вам не безразлично) - что означает меньше опций, но самое большое отличие в том, что wget поддерживает рекурсивную загрузку
Ran Davidovitz

Не знаю почему, но у меня была ошибка при выдаче unzipфайла, загруженного с curl, и он работал нормальноwget
Dinei

15

Вы можете использовать:

curl https://github.com/ziyaddin/xampp/archive/master.zip -O -J -L

Сохраняет как: xampp-cli-master.zip

  • использовать -Lв случае обнаружения перенаправления.
  • использовать -Oдля удаленных имен файлов ( master.zip)
  • использовать -J(использовать с -O), чтобы разрешить удаленный заголовок файла ( xampp-cli-master.zip)


Или используйте -oдля создания собственного имени файла:

curl https://github.com/ziyaddin/xampp/archive/master.zip -L -o MyFilename.zip

Сохраняет как: MyFilename.zip

Примечание: (GitHub поддерживает SSL - используйте https://)


Вы также можете использовать curlrc файл конфигурации или псевдоним команды CURL, чтобы curl -O -Lпозволить ей работать аналогично WGET.

Консультируйтесь: https://curl.haxx.se/docs/manpage.html#OPTIONS (см .: -O , -J , -L , -o )

Обратите внимание на предупреждение об использовании CURL с опцией -J:

Нет попытки декодировать% -последовательности (пока) в указанном имени файла, поэтому эта опция может предоставить вам довольно неожиданные имена файлов.

ПРЕДУПРЕЖДЕНИЕ . Будьте осторожны при использовании этой опции, особенно в Windows. Мошеннический сервер может отправить вам имя DLL или другого файла, который может быть автоматически загружен Windows или каким-либо сторонним программным обеспечением.


5

Если вы хотите скачать файл, используйте wget [option]... [URL]...вместо этого.

Для получения дополнительной информации о параметрах, просто введите это в свой терминал: man wget

Для вашей цели:

wget http://github.com/ziyaddin/xampp/archive/master.zip

Обратите внимание, что файл .zip будет сохранен в текущем каталоге, в котором вы находитесь.


1
Было бы полезно объяснить преимущества использования wgetover curl. Для тех, кто интересуется различием между двумя, смотрите здесь .
Хорхе Букаран

@JorgeBucaran Я прочитал сравнение, написанное автором, curlкоторый также вносит свой вклад wgetв второстепенную роль. Одно вопиющее упущение (основанное на моем одномоментном небольшом проекте) заключается в том, что wget в 10 раз быстрее, чем curl (<2 секунды против 12 секунд), получая время восхода и захода солнца изhttps://www.timeanddate.com
WinEunuuchs2Unix

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

3

Чтобы загрузить файлы в GitHub (или на любой другой сайт, который делает перенаправления) curl, вы должны пройти -L(Follow redirects), поэтому используйте:

curl -L http://github.com/ziyaddin/xampp/archive/master.zip -o xampp.zip


1

«curl -LOk» делает это, используя небезопасные протоколы (-k), отключая проверки SSL-сертификатов (которые не проходят из-за неправильного пути, не совпадающего с сертификатом), и создает выходной файл, используя имя файла (-O), предложенное с удаленного сервера. (также небезопасно). По моему мнению, сервер должен быть лучше настроен для создания псевдонимов локального перенаправления, где это необходимо, чтобы избежать необходимости передавать эту несоответствующую часть URL. Но перенаправление выполняется только с помощью перенаправления HTTP (ошибка HTTP 30x), что вызывает проблемы с скручиванием, которые не следуют (по умолчанию) этому (незащищенному) перенаправлению, а параметр (-k) отключает эту проверку безопасности. Поэтому вместо использования перенаправлений HTTP (перемещенных навсегда) добавьте внутреннюю ссылку в файловую систему сервера. Если это необходимо, поскольку URL-адрес фактически размещен на другом физическом сервере без прямого доступа между их файловыми системами, вам следует использовать другое DNS-имя для этого хоста, чтобы клиенты запрашивали правильное имя напрямую, без какого-либо перенаправления. Затем исправьте свои веб-страницы (вы можете использовать журналы вашего веб-сервера, чтобы узнать, куда возвращаются перенаправления HTTP 30x и какие веб-страницы, возможно, необходимо проверить и обновить). Принудительное использование клиентами незащищенных / непроверенных протоколов не является хорошим вариантом.

Так что это определенно проблема очень плохой конфигурации на веб-сервере: попробуйте связаться с администратором, чтобы это исправить.


0

ну, вы можете использовать Аксель . axel - легкий ускоритель загрузки из командной строки. он поддерживает HTTP, HTTPS, FTPи FTPSпротоколы. это хорошая и быстрая альтернатива.

установить axelс помощью:

apt-get install axel

затем загрузите ваш файл:

axel http://github.com/ziyaddin/xampp/archive/master.zip

0

Используйте опцию, -Lчтобы следовать перенаправлениям, вы можете также использовать --outputопцию, чтобы дать путь и имя к почтовому файлу. Например:

sudo curl -L https://github.com/CISOfy/lynis/archive/master.zip --output /etc/lynis.zip

Примечание. Используйте sudo, если у вас нет прав для записи в целевую папку.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.