Битлента
Сетевые команды и утилиты5 мин чтения·

wget: как скачивать файлы и докачивать их при обрыве соединения

Основные ключи wget для загрузки файлов: -O, -P, -c для докачки, --tries, --limit-rate, -i для списка адресов, а также установка на Windows и macOS.

Кратко

Команда wget адрес скачивает файл в текущую папку, ключ -c докачивает оборванную загрузку, -O задаёт имя, -P папку, --limit-rate ограничивает скорость. В Windows и macOS программу сначала нужно установить.

Установка и отличия по системам

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

В большинстве дистрибутивов Linux она уже есть; если нет, ставится из менеджера пакетов: apt install wget, dnf install wget и так далее. В macOS по умолчанию её нет: обычно её устанавливают через Homebrew командой brew install wget. В Windows wget отсутствует, а в Windows PowerShell 5.1 слово wget — псевдоним командлета Invoke-WebRequest, у которого другие параметры и который не понимает -c. Поэтому в Windows либо устанавливают отдельную сборку wget, либо пользуются встроенным curl.exe с ключом -O и -C -.

Проверить установку можно командой wget --version. Если вывод содержит версию и список опций сборки, всё в порядке.

Базовые команды и ключи

Простейший запуск: wget example.com/file.zip. Файл появится в текущей папке, а в терминале будет полоса прогресса, скорость и оставшееся время. Если файл с таким именем уже есть, wget добавит к новому суффикс .1, а не перезапишет старый.

КлючЧто делает
-O имяСохраняет под указанным именем; существующий файл перезаписывается
-P папкаСохраняет в указанную папку
-cПродолжает загрузку с места обрыва
-t N или --tries=NЧисло попыток; 0 означает бесконечно
-T N или --timeout=NТаймаут в секундах
-qТихий режим
-bУход в фон, журнал в файле wget-log
-i файлЧитает адреса из текстового файла
-ncНе скачивать заново, если файл уже есть

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

Докачка после обрыва

Самая ценная возможность — ключ -c. Он проверяет размер частично загруженного файла и запрашивает у сервера остаток. Порядок действий такой:

  1. Загрузка прервалась: закрылся терминал, пропало соединение или выключили компьютер. Частичный файл остался в папке.
  2. Перейдите в ту же папку, где он лежит, и выполните ту же команду с добавлением -c: wget -c example.com/file.zip.
  3. wget сообщит, что продолжает загрузку с определённого байта, и дозагрузит остаток.
  4. Проверьте итог: размер и, если сайт публикует, контрольную сумму. В Linux и macOS подойдёт sha256sum или shasum -a 256, в Windows команда certutil -hashfile файл SHA256.

Докачка работает только если сервер поддерживает запросы диапазона байтов. Если поддержки нет, wget начнёт сначала или сообщит, что докачать нельзя. Не используйте -c, если файл на сервере изменился: результат окажется повреждённым, проверка суммы это покажет.

Для нестабильного канала комбинируйте ключи: wget -c -t 0 -T 30 --waitretry=10 адрес. Так wget будет повторять попытки бесконечно, ждать ответа до тридцати секунд и делать растущую паузу между повторами до десяти секунд.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Списки, фон и ограничение скорости

Чтобы скачать несколько файлов, поместите адреса в текстовый файл, по одному на строку, и запустите wget -i list.txt -P downloads. Все файлы окажутся в папке downloads, папка создастся сама.

Долгую загрузку удобно отправить в фон ключом -b. Ход выполнения тогда пишется в wget-log, и его можно смотреть командой tail -f wget-log в Linux и macOS или Get-Content wget-log -Wait в PowerShell. Программа продолжит работу и после закрытия окна терминала на Linux и macOS.

Если загрузка забивает канал и мешает остальным устройствам, ограничьте её: --limit-rate=500k оставит на загрузку около пятисот килобайт в секунду. Значение задаётся в байтах в секунду, поэтому не путайте с мегабитами: 1 мегабит в секунду — примерно 125 килобайт в секунду.

Для имени, которое сервер отдаёт в заголовке, а не в адресе, полезен ключ --content-disposition: он берёт имя файла из заголовка ответа.

Если загрузка не идёт

Ошибки в выводе wget подскажут причину. Строка 404 Not Found означает неверный адрес. 403 Forbidden — сервер отказывает, возможно, из-за отсутствия авторизации или из-за того, что он не пускает клиентов с определённым User-Agent; для проверки добавьте --user-agent со строкой обычного браузера. 429 говорит о слишком частых запросах. Сообщение о невозможности разрешить имя относится к DNS, а не к wget.

Ошибка проверки сертификата возникает при просроченном или самоподписанном сертификате. Ключ --no-check-certificate отключает проверку, но применять его стоит лишь на своих тестовых серверах и временно: соединение теряет защиту от подмены. Лучше исправить сертификат или добавить корневой сертификат в систему.

Скачивайте только то, что вам разрешено, и следите за лицензией на файлы. Рекурсивная загрузка целых сайтов ключом -r создаёт нагрузку на чужой сервер и без разрешения владельца её лучше не применять.

Проверка целостности и аккуратная работа с загрузками

После скачивания больших файлов, например образов дисков или архивов, проверяйте целостность. Издатель обычно публикует контрольную сумму SHA-256 рядом со ссылкой. Вычислите сумму у себя и сравните строку с опубликованной: в Linux командой sha256sum файл, в macOS командой shasum -a 256 файл, в Windows командой certutil -hashfile файл SHA256 либо Get-FileHash файл в PowerShell. Если строки отличаются даже одним символом, файл повреждён или подменён, и его нельзя запускать.

Учтите доступное место на диске: wget не проверяет заранее, поместится ли файл, и обрыв из-за нехватки места выглядит как ошибка записи. Перед загрузкой посмотрите размер в заголовке Content-Length командой wget --spider или curl -I. Ключ --spider покажет, существует ли ресурс и какой у него размер, ничего не скачивая.

Для загрузок, требующих входа, в wget предусмотрены ключи --user и --ask-password. Второй вариант предпочтительнее: пароль не остаётся в истории команд оболочки и в списке процессов. Никогда не вставляйте пароль прямо в строку команды на общем компьютере.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
wgetскачиваниекомандная строкадокачка

Часто задаваемые вопросы

Читайте также