Preciso fazer o download de um arquivo grande (1 GB). Também tenho acesso a vários computadores executando o Linux, mas cada um é limitado a uma velocidade de download de 50kB / s por uma política de administrador.
Como distribuo o download desse arquivo em vários computadores e os mesclo após o download de todos os segmentos, para que eu possa recebê-lo mais rapidamente?
download
cluster
parallelism
Meysam
fonte
fonte
Respostas:
Os protocolos comuns HTTP, FTP e SFTP suportam solicitações de intervalo , para que você possa solicitar parte de um arquivo. Observe que isso também requer suporte do servidor, portanto, pode ou não funcionar na prática.
Você pode usar
curl
e a opção-r
ou--range
para especificar o intervalo e, eventualmente, apenascat
juntar os arquivos. Exemplo:E, eventualmente, quando você reúne as partes individuais, você as concatena:
Você pode obter mais informações sobre o arquivo, incluindo seu tamanho com a
--head
opção:Você pode recuperar o último pedaço com um intervalo aberto:
Leia a página de manual curl para mais opções e explicações.
Você pode aproveitar ainda mais o ssh e o tmux para facilitar a execução e acompanhar os downloads em vários servidores.
fonte
cat distro* > ...
verifique a classificação dos arquivos, pois os arquivos*
expandidos pelo shell podem ser classificados da seguinte forma:distro1.iso distro10.iso distro11.iso ...
concatenando na ordem errada.cat distro{1..10}.iso
cat $(seq -fdist%g.iso 1 10)
deve ser mais previsível, mas falhacsh
, no entanto. Substituir$(…)
por backtics parece funcionar na maioria das conchas.seq
também não é um comando portátil. Você pode usardistro001.iso
,distro002.iso
...distroy010.iso
Levaria cerca de 5,5 horas para carregar um arquivo de 1 gigabyte a 50 kilobytes por segundo.
Parece que o esforço para coordenar vários computadores para obter parciais pode economizar algum tempo.
Você pode olhar para o bittorrent e utilizar a semeadura na web junto com as transferências via troca entre pares. Cada cliente pode receber e compartilhar peças concluídas na rede local (LAN). Você acaba com o mesmo arquivo de 1 GB em cada computador, mas a fusão de peças é automatizada para você.
fonte