Завантажте ZIP-файл із командою curl


33

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

але не може. Що я повинен набрати?


Що таке повідомлення про помилку?
Девід Фоерстер

Відповіді:



20

Спробуйте wget замість curl: wget http://github.com/ziyaddin/xampp/archive/master.zip


1
Чи може пояснювач пояснити? Або інший плакат?
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
Було б корисно пояснити переваги використання wgetпонад curl. Для тих, хто цікавиться різницями між двома, дивіться тут .
Хорхе Букарань

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

Так, іноді, коли ви використовуєте wget, і файл не подається безпосередньо, але натомість URL-адреса повідомляє службі, де знайти та обслуговувати файл, те, що ви в кінцевому рахунку завантажуєте, це html. Тож завиток краще для деяких файлів замість цього
Zloy Smiertniy

3

Для завантаження файлів у GitHub (або будь-якому іншому веб-сайті, що здійснює переадресацію) за допомогою curl, ви повинні пройти -L(Follow the 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 . axel - це легкий прискорювач завантаження командного рядка. він підтримує HTTP, HTTPS, FTPта FTPSпротоколи. його приємна і швидша альтернатива.

встановити axelза допомогою:

apt-get install axel

потім завантажте файл:

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

0

Використовуйте опцію -Lдля слідування переспрямувань, ви також --outputможете вказати шлях та ім'я до zip-файлу. Наприклад:

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.