1

У меня есть система, которая должна получать последние 200 строк из очень большого публичного файла каждый день. Файл выставлен над URL. В настоящее время я запускаю простой скрипт, который выполняет wget а затем помещает последние 200 строк в другой файл, после чего исходный файл снова удаляется.

Поскольку исходный файл очень большой (около 250 МБ), большую часть времени выполнения сценария занимает загрузка файла.

Моя система работает нормально, но раздражает, что это занимает так много времени, в том числе и потому, что я часто просто жду этого.

Я нашел предложения, подобные этому, но это в основном делает то же самое, что я делаю сейчас; загрузка всего файла и отслеживание его.

Кто-нибудь знает способ, которым я могу отслеживать публичный файл, не загружая его полностью? Все советы приветствуются!

2 ответа2

0

Если сервер, на котором хранится файл, поддерживает продолжение загрузки, вы можете начать загрузку с любого смещения, используя параметр --start-pos в wget .

Вам нужно получить размер файла (используя что-то вроде curl -I), вычислить приблизительную оценку последних 200 строк и использовать разницу в качестве начального смещения.

0

Если вы используете опцию -c|--continue , wget просто загрузит недостающую часть и добавит ее в существующую копию:

-c
--continue
    Continue getting a partially-downloaded file. This is useful when you want to finish up 
    a download started by a previous instance of Wget, or by another program. For instance:

    wget -c ftp://sunsite.doc.ic.ac.uk/ls-lR.Z

    If there is a file named ls-lR.Z in the current directory, Wget will assume that it
    is the first portion of the remote file, and will ask the server to continue the 
    retrieval from an offset equal to the length of the local file. 

Не то чтобы это требовало от сервера поддержки опции "Range" HTTP, точно так же, как --start-pos в ответе @efotinis. Это называется службой байтов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .