загрузка с помощью curl с использованием нескольких соединений - PullRequest
8 голосов
/ 05 декабря 2011

Я пытаюсь перенести мультибайтный файл с одного сервера на другой;Проблема в том, что RTT составляет 150 мс +.Я уже пытался использовать aria2, но он ограничен 16 соединениями, lftp не имеет никакой защиты от остановленных передач.

Мне интересно, возможно ли загрузить один файл с несколькими подключениями, используя curl cli.

Ответы [ 3 ]

5 голосов
/ 16 мая 2013

Существует скрипт под названием pcurl , который упаковывает curl для нескольких одновременных загрузок, а затем объединяет их по завершении.

По умолчанию установлено 10 соединений, но это можно изменить в MAX_SEGMENTS в строке 81.

Он вызывается так:

./pcurl.sh http://myurl.to/a/very/largefile.zip
2 голосов
/ 05 декабря 2011

Нет, у инструмента curl такой способности нет.

(о, кстати, большой RTT очень редко объясняет, почему обычная передача по TCP медленная)

1 голос
/ 25 ноября 2016

Это возможно. Получить общий размер файла с параметром -I в curl.

Затем вы можете разветвить множество процессов в оболочке, каждое соединение curl с другим заголовком Content-Length, чтобы загрузить другую часть файла.

После завершения всех задач объедините все загруженные фрагменты в большой файл.

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

...