🖧 Curl загружает HTML вместо реального Zip-файла? Вот что нужно сделать |

🖧 Curl загружает HTML вместо реального Zip-файла? Вот что нужно сделать

Мануал

Curl – это отличный инструмент для загрузки файлов в терминале Linux.

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

curl -O URL_of_the_file

В большинстве случаев это работает.

Однако вы заметите, что иногда при загрузке файла с GitHub или SourceForge пользователь не получает правильный файл.

Например, я пытался загрузить скрипт archinstall в формате tar gz.

Файлы расположены на странице релиза.

Если я открою ссылку на исходный код в браузере, то получу исходный код в формате .tar.gz.

⚓ Выполнение POST-запроса с помощью Curl [Практические примеры]

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

tar -zxvf v2.4.2.tar.gz 

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

Когда я выполняю команду file, чтобы узнать точный тип файла, он сообщает мне, что это документ HTML.

file v2.4.2.tar.gz 
v2.4.2.tar.gz: HTML document, ASCII text, with no line terminators

HTML-документ вместо архива zip или tarball?

В чем проблема?

Сейчас я покажу вам быстрое решение.

🖧 В чем разница между curl и Wget?

Правильная загрузка архивного файла с помощью curl

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

Чтобы получить это, вам нужно использовать дополнительные опции

curl -JLO URL_of_the_file

Варианты могут быть в любом порядке. Просто проще запомнить J LO (Дженнифер Лопес).

Вот краткое объяснение опций, основанное на man-странице команды curl.

  • J: Эта опция указывает опции -O, –remote-name использовать указанное сервером имя файла Content-Disposition вместо извлечения имени файла из URL.
  • L: Если сервер сообщает, что запрошенная страница переместилась в другое место (на это указывает заголовок Location: и код ответа 3XX), эта опция заставит curl повторить запрос на новом месте.
  • O: С этой опцией вам не нужно указывать имя выходного файла для загрузки.

Бонусный совет: Вам нужно войти в систему?

Это работает для общедоступных файлов.

Но если вы попытаетесь загрузить файлы из частных репозиториев или GitLab, то вы можете увидеть сообщение о перенаправлении на страницу входа.

<html><body>You are being <a href="https://gitlab.com/users/sign_in">redirected</a>.</body></html>

В таких случаях, пожалуйста, укажите API-токен с опцией -H.

Надеюсь, этот небольшой совет поможет вам правильно загружать архивные файлы с помощью Curl.

Дайте мне знать, если вы все еще сталкиваетесь с проблемами при загрузке с помощью Curl.

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий