Как скачивать файлы с помощью curl

curl - это один из самых универсальных инструментов командной строки для работы с сетью. Его используют разработчики, администраторы и DevOps-инженеры, когда нужно быстро скачать файл, обратиться к API или автоматизировать загрузки в скриптах.

Разберёмся, как выстроить удобный и понятный workflow для скачивания файлов с его помощью.

Базовый принцип работы

В самом простом виде curl получает файл по URL и сохраняет его на диск.

Есть два основных варианта:

Скачивает файл с оригинальным именем.

curl -O https://example.com/file.zip

Позволяет задать своё имя файла.

curl -o myfile.zip https://example.com/file.zip

Это базовый уровень, но в реальной работе почти всегда нужны дополнительные параметры.

Куда сохраняется файл

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

curl -o downloads/file.zip https://example.com/file.zip

Если папки нет то её нужно создать заранее.

Работа с редиректами

Многие ссылки (особенно короткие или CDN) используют редиректы. Без дополнительного флага curl может скачать не файл, а HTML-страницу с редиректом.

Решение:

curl -L -O https://example.com/file.zip

Флаг -L заставляет curl следовать редиректам.

Отображение прогресса

По умолчанию curl показывает текстовую статистику. Если нужен более привычный прогресс-бар:

curl -# -O https://example.com/file.iso

Это удобно при скачивании больших файлов.

Докачка файла (resume)

Если загрузка прервалась, не обязательно начинать заново:

curl -C - -O https://example.com/file.iso

-C - продолжает загрузку с места остановки.

Повторные попытки при ошибках

Сети нестабильны, поэтому полезно сразу добавить retry:

curl --retry 3 --retry-delay 2 -O https://example.com/file.zip
  • 3 попытки

  • пауза 2 секунды между ними

Скачивание нескольких файлов

Можно передать несколько URL:

curl -O https://site.com/file1.txt -O https://site.com/file2.txt

Или использовать список:

while read url; do
  curl -O "$url"
done < urls.txt

Так удобно автоматизировать массовые загрузки.

Ограничение скорости и таймаут

Если не хочешь забивать канал:

curl --limit-rate 2M -O https://example.com/file.zip

Или ограничить время ожидания:

curl --max-time 60 -O https://example.com/file.zip

Аутентификация и заголовки

Если файл доступен только с авторизацией:

curl -u username:password -O https://example.com/file.zip

Или через токен:

curl -H "Authorization: Bearer TOKEN" -O https://api.example.com/file

Типичный workflow (как делают на практике)

В реальной задаче команды обычно комбинируются. Например:

curl -L --retry 3 -C - -o backup.tar.gz https://example.com/backup.tar.gz

Что здесь происходит:

  • -L - учитываем редиректы

  • --retry 3 - повторяем при ошибке

  • -C - - продолжаем загрузку

  • -o - задаём имя файла

Такой подход делает загрузку устойчивой и пригодной для автоматизации.

Когда использовать curl

curl особенно полезен, если ты:

  • пишешь bash-скрипты или CI/CD пайплайны

  • работаешь с API

  • скачиваешь файлы на сервере без GUI

  • автоматизируешь деплой или бэкапы

Он поддерживает HTTP, HTTPS, FTP и другие протоколы, поэтому подходит почти для любых сетевых задач.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Осваиваем сервис-контейнер Symfony с помощью современных PHP-атрибутов

Объясняем как использовать современные PHP-атрибуты для настройки сервис-контейнера Symfony, чтобы избавиться от сложной YAML-конфигурации и сделать код более компактным и понятным.

Работа с изображениями в Laravel через пакет Intervention Image

Как использовать библиотеку Intervention Image в Laravel для обработки изображений. Установка, чтение, изменение размера, обрезка, конвертация и водяные знаки. Практические примеры кода и советы по применению.

Laravel AI SDK: создавайте умные приложения с ИИ

Laravel AI SDK - что это, как установить, как он работает и чем полезен разработчикам. Показаны ключевые возможности для создания интеллектуальных AI‑функций в Laravel‑приложениях.