Как возобновить загрузку по ftp в любой момент? (скрипт оболочки, опция wget)?

Я хочу скачать огромный файл с ftp-сервера кусками по 50-100 МБ каждый. В каждой точке я хочу иметь возможность установить «начальную» точку и длину нужного фрагмента. У меня не будут сохраняться «предыдущие» фрагменты локально (т. е. я не могу попросить программу «возобновить» загрузку).

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


Я действительно заинтересован в предварительно встроенной/встраиваемой функции, а не в использовании библиотеки для этой цели... Поскольку wget/ftp (я также думаю) разрешают возобновление загрузки, я не вижу, будет ли это проблема ... (хотя я не могу понять из всех вариантов!)


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


person Dave    schedule 08.05.2010    source источник
comment
Я настоятельно рекомендую Python с ftplib, это встроенная библиотека для управления ftp-соединениями. если у меня будет больше времени позже, я оставлю ответ. (docs.python.org/library/ftplib.html)   -  person msemelman    schedule 08.05.2010


Ответы (3)


Я рекомендую взаимодействовать с libcurl на выбранном вами языке.

person Yann Ramin    schedule 08.05.2010

Используйте wget с:

опция -c

Извлечено из справочных страниц:

-c / --продолжить

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

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

Если в текущем каталоге есть файл с именем ls-lR.Z, Wget предположит, что это первая часть удаленного файла, и попросит сервер продолжить поиск со смещения, равного длине локального файла. .

person msemelman    schedule 08.05.2010
comment
Фантастика! У меня была ftp-загрузка образа Windoze размером 35 ГБ, которая была прервана на 33 ГБ, и это возобновило ее без сучка и задоринки!! Если вам нужно указать аутентификацию на сайте, вы можете использовать --ftp-user=<user> --ftp-password=<passwd> - person sxc731; 23.06.2016

Для тех, кто хотел бы использовать curl из командной строки, вот:

curl -u user:passwd -C - -o <partial_downloaded_file> ftp://<ftp_path>

(не указывайте -u user:pass для анонимного доступа)

person sxc731    schedule 23.06.2016