Parece que o que você realmente quer é um aplicativo que possa baixar um arquivo em partes de diferentes interfaces e juntá-las no final. Por exemplo, se você soubesse que seu arquivo tinha 100 MB e quisesse pegar pedaços de aproximadamente 10 MB, você gostaria de fazer:
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
Eu sei que wget
pode retomar um arquivo baixado parcialmente. Tenho certeza que funciona lendo para o final do arquivo existente e, em seguida, solicitando o arquivo, a partir do próximo byte, do servidor.
Parece que curl
suporta downloads parciais como este, usando a opção --range <byterange>
. Então você pode roteirizar os passos acima assim:
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
Advertências: isso nem sempre funciona; se o servidor HTTP / 1.1 não tiver o recurso de download parcial ativado, você obterá o arquivo inteiro em cada chamada. Consulte man curl
para detalhes sobre a opção --range
.
Editar: intervalos de bytes fixos nos exemplos