Загрузка путем добавления после некоторого процента завершения

Загрузка путем добавления после некоторого процента завершения

Я всегда использую wget -cдля загрузки файла, который позволяет загружать его, добавляя при необходимости из последней позиции загрузки.

Файл загружается 30%. Затем после загрузки сети он начал добавлять какой-то мусор в конец файла и дошел до 40%. (Мусор добавлялся из-за логики файлового сервера, которая выдает мусорные данные после 30mins).

Теперь у меня есть новое местоположение URL с новым токеном, доступным для следующего 30minsдля того же файла. Как я могу продолжить загрузку того же файла, но начать с 30%этого момента?

Или есть какое-то приложение, которое это делает?

бывший:

$ wget -c http://xyz.com/file.txt?token=1

30% [=============>                                 ]
40% [=================>                             ] (10%junk added)

^C - cancelled

$ wget -c http://xyz.com/file.txt?token=2 --from='30%'

31% [+++++++++++++=>                               ]

Примечание: - --from='30%'это просто пример, если это возможно. Ничего похожего на этот аргумент не существует вwget

решение1

wget -c / --continueвсегда продолжается с указанным размером файла, но вы можете это изменить:

Используйте truncateдля уменьшения файла до исходного 30%размера (необходимо указать размер в байтах или килобайтах). Или вы можете использовать head -c SIZE file > file_30pc, который не трогает исходный файл (но тогда вам придется переименовать его).

И как предлагает BlueManCZ, вы можете использовать , -O output-fileчтобы убедиться, что это тот же самый файл.

Примечание:Использование --start-posвместо -c/--continueдля указания последней хорошей позиции будетнетработает, вместо этого он создает новый файл с этой позиции и далее, а не добавляет существующий (он даже перезапишет, если вы укажете -O).

решение2

Если вам необходимо продолжить загрузку того же файла с другого URL-адреса (или переименованного файла), вы должны указать конкретное имя файла в вашей команде.

wget -c -O myfilename https://examle.net/file1.txt

[will be stoped in 30%]

wget -c -O myfilename https://another_url.net/file2.txt

[will start on 30% of previous file]
[file1.txt and file2.txt must be same]

Но я не знаю, является ли это ответом именно на Вашу проблему.

решение3

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

aria2c -c -m 0 -o "myfile.zip" "http://example.com/file.zip"

здесь -c говорит о продолжении предыдущей загрузки -m говорит о повторении загрузки бесконечное количество раз -o говорит о выходном файле

попробуйте aria2 — один из лучших загрузчиков для Linux

Связанный контент