Как в завихрении, у нас есть связывать опция адреса, мы можем загрузить использование определенного интерфейса..
Поскольку исключая, для загрузки с eth0:0 мы используем $curl - интерфейсный eth0:0 http://www.google.com
Таким образом, моя цель состоит в том, чтобы загрузить файлы, но так как завихрение не поддерживает сегментированную загрузку, я не хочу использовать его. У нас есть ограничение скорости на каждом IP. Для преодоления этого ограничения я могу запустить много интерфейсов как это и загрузить некоторую часть файла от каждого интерфейса.
Как я делаю какой-либо другой менеджер загрузок как АКСЕЛЬ для привязки с конкретным адресом? Я прошу некоторую идею как замена переменных в оболочке Bash, так, чтобы целая оболочка связала с конкретным интерфейсом, позволяет, говорят eth0:1...
Это походит на то, что Вы действительно хотите, приложение, которое может загрузить файл в частях от различных интерфейсов и присоединиться к ним вместе в конце. Например, если бы Вы знали, что Ваш файл составлял 100 МБ, и Вы хотели захватить блоки примерно 10 МБ, то Вы хотели бы сделать:
1. start a download of bytes 0..10000000 on eth0, saving to filename.part1
2. start a download of bytes 10000001..20000000 on eth0:0, saving to `filename.part2
3. start a download of bytes 20000001..30000000 on eth0:1, saving to filename.part3
...
N-1. wait for all downloads to complete
N. join all filename.part* together to get filename.complete
Я знаю wget
может возобновить частично загруженный файл. Я вполне уверен, который работает путем чтения в конец существующего файла и затем запроса файла, запуска со следующего байта, с сервера.
Это похоже curl
поддерживает частичные загрузки как это использование --range <byterange>
опция. Таким образом, Вы могли написать сценарий вышеупомянутых шагов как так:
1. curl --interface eth0 --range 0,10000000 http://some.server.com/bigfile -o bigfile.part1
2. curl --interface eth0:0 --range 10000001,20000000 http://some.server.com/bigfile -o bigfile.part2
...
N. cat bigfile.part* > bigfile
Протесты: это не всегда работает; если серверу HTTP/1.1 не включат функцию частичной загрузки, то Вы получите целый файл на каждом вызове. Посмотрите man curl
для получения дополнительной информации о --range
опция.
Править: фиксированный байт располагается в примерах
Сделайте eth0:0 маршрутом по умолчанию вместо eth0. Команда:
netstat -rn
покажет Вам, каков Ваш текущий интерфейс по умолчанию. Если это не eth0:0, удалите его с
route delete 0.0.0.0
затем добавьте его с чем-то как
route add default eth0:0
Вот сообщение в блоге о разделении загрузки с завихрением. Я попробовал в Windows, но не мог заставить его работать, но Вы могли бы иметь успех с Linux.