Возобновите неудачную загрузку с помощью инструмента командной строки Linux.

Вопрос или проблема

Как мне возобновить частично загруженный файл с помощью инструмента командной строки Linux?

Я частично загрузил большой файл, т.е. 400 МБ из 900 МБ из-за отключения электроэнергии, но когда я начинаю загрузку снова, она начинается с нуля. Как мне начать с 400 МБ?

Поскольку вы не уточнили, я предполагаю, что вы используете wget для загрузки файла. Если это так, попробуйте использовать его с опцией -c (например, wget -c <URL>).

Обратите внимание, что в случае использования протокола ftp (URL выглядит как ftp://...) существует вероятность того, что удаленный сервер использует старый/древний ftp-демон, который не поддерживает возобновление загрузок (новые ftp-демоны поддерживают это более десяти лет, так что это просто небольшая вероятность). Если это так, вам может не повезти. С другой стороны, у вас не должно возникнуть проблем, если используется протокол http. (ОБНОВЛЕНИЕ: Согласно мнению других экспертов (включая Жиля в комментариях ниже), возобновление при использовании http также зависит от поддержки сервера, так что это относится и к ftp, и к http).

Удачи.

Если нужно загрузить несколько файлов и загрузка была прервана на одном из файлов, то -c вместе с -r может помочь.

wget -c -r <url>

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

wget -c -r -np -k --wait=15 --limit-rate=50K <url>

curl -C -

Если вы хотите использовать curl вместо wget:

curl -C - -o index.html https://example.com

Из man:

Используйте “‐C -“, чтобы сказать curl автоматически определить, где/как возобновить передачу. Он затем использует указанные выходные/входные файлы для этого.

Мы можем быстро и грязно протестировать это с помощью:

printf asdf > index.html
curl -C - -o index.html https://example.com

и теперь index.html начинается с:

asdfctype html>
<html>

так что явно были пропущены первые 4 символа <!do при загрузке, поскольку файл уже имел их, без asdf файл был бы:

<!doctype html>
<html>

Проверка возможностей сервера: accept-ranges: bytes

Инкрементальная загрузка работает на example.com потому что согласно:

curl -I https://example.com

сервер возвращает:

accept-ranges: bytes

HTTP-заголовок, что означает, что curl может запрашивать ranges: запрашивая начать с середины:

Примеры сайтов, которые имеют accept-ranges: bytes:

  • archive.org (тестировалось в ноябре 2024)

Тестировалось на Ubuntu 23.10, curl 8.2.1.

Я понимаю, что означает оригинальный вопрос, и ответ не wget -c …

Сценарий можно описать так:

# Начать зеркалирование сайта
wget -m http://...
# 400 МБ позже wget умер или был прерван,
# не знаю, где он остановился, не важно,
# просто хочу получить оставшиеся 100 МБ, не получая первые 400 МБ снова
wget -nc -r -l inf --no-remove-listing http://...

Опции “-r -l inf –no-remove-listing” эквивалентны -m без параметра -N. Добавление параметра -nc позволяет избежать сохранения первых 400 МБ уже на вашем жестком диске.

Вот что я сделал:

  • Сначала перейдите в расположение, содержащее прерванный файл на вашем компьютере, если имя файла newfile.txt, вы найдете 2 файла, newfile.txt и newfile.txt.part, файл newfile.txt.part содержит загруженное содержимое, поэтому удалите файл newfile.txt и переименуйте newfile.txt.part в newfile.txt.

  • Вам также понадобится URL файла, это может быть что-то вроде https://www.downloadsite.com/newfile.txt. Вы можете получить его из вкладки загрузок вашего браузера.

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

    wget -c "https://www.downloadsite.com/newfile.txt" -O "newfile.txt"
    

    (замените URL и имя файла на ваш актуальный URL и имя файла).

Ответ или решение

Как возобновить прерванную загрузку файла с помощью командной строки Linux

Если вы столкнулись с ситуацией, когда загрузка большого файла была прервана, и вы хотите продолжить скачивание с того места, где вы остановились, существует несколько инструментов и методов на Linux, которые помогут вам решить эту проблему. Я детально опишу процесс, используя наиболее распространенные инструменты – wget и curl.

Использование wget

  1. Установка wget:
    Убедитесь, что wget установлен на вашей системе. Вы можете установить его с помощью пакетного менеджера. Для Ubuntu или Debian выполните:

    sudo apt update
    sudo apt install wget
  2. Возобновление загрузки с помощью wget:
    Предположим, что ваш файл был частично загружен, и вы хотите продолжить скачивание. При этом важно, чтобы сервер поддерживал возобновление загрузки (это можно проверить по заголовку HTTP Accept-Ranges: bytes). Вы можете использовать следующую команду:

    wget -c <URL>

    Здесь -c обозначает "continue" (продолжить), благодаря чему wget попытается возобновить загрузку с того места, где она была прервана.

  3. Работа с множеством файлов:
    Если вы загружаете несколько файлов и хотите проверить их целостность:

    wget -c -r -np -k --wait=15 --limit-rate=50K <URL>

    В этом случае:

    • -r: рекурсивная загрузка.
    • -np: не подниматься на уровень выше.
    • -k: конвертировать ссылки для локальной работы.
    • --wait=15: ожидание между запросами в 15 секунд.
    • --limit-rate=50K: ограничение скорости загрузки до 50 КБ/с.

Использование curl

  1. Установка curl:
    Убедитесь, что curl установлен на вашей системе. Для установки используйте:

    sudo apt update
    sudo apt install curl
  2. Возобновление загрузки с помощью curl:
    Чтобы продолжить загрузку, вы можете использовать команду:

    curl -C - -o <имя_файла> <URL>

    В этой команде -C - указывает curl автоматически определить, с какого места продолжить загрузку. Параметр -o указывает имя выходного файла.

  3. Проверка поддержки сервером:
    Чтобы убедиться, поддерживает ли сервер возобновление загрузок, вы можете выполнить:

    curl -I <URL>

    Проверьте, есть ли в ответе заголовок Accept-Ranges: bytes. Это подтвердит, что сервер поддерживает возобновление.

Дополнительные рекомендации

  • Проверка состояния загруженного файла: Если у вас есть файл с расширением .part, это может указывать на его частичное завершение. Вы можете переименовать его:

    mv newfile.txt.part newfile.txt
  • Замена файла: Если вы хотите использовать wget с уже существующим файлом (например, newfile.txt), замените его командой:

    wget -c "https://www.downloadsite.com/newfile.txt" -O "newfile.txt"

Заключение

Итак, возобновление скачивания с помощью wget или curl — это довольно простая, но очень полезная функция, которая позволяет экономить время и трафик, особенно при скачивании больших файлов. Убедитесь, что ваш сервер поддерживает возобновление, и воспользуйтесь приведенными выше командами для успешного завершения загрузки.

Оцените материал
Добавить комментарий

Капча загружается...