Baixando um mesmo arquivo em mais de um computador

Bom galera, resolvi escrever esse artigo pois percebi que muitas vezes temos limite de banda muito baixo, e surgiu um modo de fazer uma união de computadores para baixar um arquivo (geralmente muito grande) em mais de 1 PC, diminuindo proporcionalmente o tempo de download, conforme a quantidade de PCs envolvidos.

[ Hits: 15.364 ]

Por: Jakson de Oliveira Lima em 28/02/2011


Usando apenas uma máquina e considerações finais



Bem, e se você pudesse fazer o descrito na segunda página usando apenas uma máquina? Não sei se existe algum método fácil, mas que existe um através de máquinas virtuais!

Sei pois testei primeiro usando máquinas virtuais e possuo acesso a minha rede somente com uma placa. Primeiro utilizei o VirtualBox com 4 máquinas virtuais com rede em modo bridged com minha placa real, com isso cada máquina se conectou fisicamente e independente a minha rede, depois configurei cada máquina como um cliente independente, com configurações doadas de amigos meus para usar de madrugada.

Assim era como se eu tivesse 5 máquinas com bandas independentes, meu PC e 4 máquinas virtuais, executando o download dividido numa boa, depois usando pastas compartilhadas uni todos os arquivos numa pasta e juntei todos. Claro que foi sorte meus amigos usarem a mesma rede que eu, senão não daria, ou então poderia ter mais de uma conexão no PC, como lan, wifi e 3g, ou seja, mesmo solitário posso ter 3 conexões, criar 2 máquinas virtuais e com base na velocidade de cada atribuir partes para baixar em cada máquina.

Enfim, são muitas ideias a se aplicar nisso.

Outra ideia que se pudesse realizaria seria a criação de um Network Download Manager, imagine você em uma rede local, quer baixar um arquivo então através que um programa ele procura outras máquinas dentro da rede local que querem baixar o mesmo arquivo, então o download é dividido entre elas, claro que isso se parece muito com P2P, mas estou falando em escala rede local, pois a velocidade para transferência na rede local das partes baixadas é geralmente muito maior do que a de conexão com a internet, com isso dividindo o download em partes dentro de uma rede local poderia acelerar muito a velocidade de download combinado entre PCs.

Também se alguém quiser criar scripts para dividir ainda mais o download com grandes números de máquinas, e também subdividindo em cada máquina, pois afinal a subdivisão do download das partes de cada PC aceleraria ainda mais do download, pois esse é o recurso mais comum dos download managers. Esse script poderia fazer tudo, medir o tamanho, e já realizar do download usando o curl.

Bem, isso é tudo, se alguém quiser complementar algo nos comentários agradeço muito.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Usando apenas uma máquina e considerações finais
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

MSN-Proxy no Debian Lenny

Servidor FTP com NetBSD (PureFTPD + MySQL)

Fuja da pirataria, use Last.fm

FreeBSD + Asterisk

Apache em chroot + MySQL + PHP + mod_security + mod_evasive + vsftpd + Fail2ban + Debian Squeeze

  
Comentários
[1] Comentário enviado por albfneto em 28/02/2011 - 18:10h

é uma boa ideía. Original e diferente.
eu uso Curl. Curl, Axel e Prozilla.

[2] Comentário enviado por alefesampaio em 28/02/2011 - 22:49h

Muito bom parabens pelo artigo vai ficar nos favoritos. ou seja Ctrl+D.

[3] Comentário enviado por removido em 02/03/2011 - 21:26h

Gostei bastante da idéia, parabéns! realmente criativo e original.

Abraços!

[4] Comentário enviado por luizdaniel em 02/03/2011 - 22:12h

muito bom, pra quem tem internet lenta iguai a mim, isso é mamão com açucar, quero saber se dar pra pegar um pedaço do arquivo agora e outro só amanhã?, se funciona dessa forma? , se for assim vai ser ótimo, podendo baixar 1giga em 3 ou 4 dias em arquivos pequenos que não pesão na rede, valeu mesmo!

[5] Comentário enviado por jaksonbt em 03/03/2011 - 00:04h

Pode ser luizdaniel, basta você executar o comando diferente para cada dia para que baixe a cada dia uma parte diferente, mas se for usar apenas uma máquina recomendo os gerenciados de downloads comuns que podem pausar o download e continuar depois na outra noite, o artigo só é mesmo útil para quando de usa várias máquinas (mesmo que virtuais), quando for só um PC é melhor os métodos padrões mesmo.

muito obrigado a todos que gostaram do meu artigo.

[6] Comentário enviado por c4rl em 05/03/2011 - 00:14h

Muito interssante a ideia, além de original. Uma mão na roda para aqueles que ainda dependem de conexões discadas.

Abraços.

[7] Comentário enviado por removido em 09/03/2011 - 22:19h

Para um computador e para baixar um grande arquivo somente a noite eu tenho um script que usa o famoso e incrível "wget -c".

Eu tenho 3 links de 300kbps (um no cômodo separado que faço minhas experiências, outro no quarto da minha filha e outro na sala para a cunhada e minha esposa, mas todo mundo usa lá um pouco) e costumo baixar três arquivos simultaneamente, que já é legal.
Mas estive pensando nas máquinas vistuais, pois não vou ligar três computadores como faço ao usar os 3 links sempre. Mas, posso deixar os 2 servidores da empresa que ficam sem nada pra fazer a noite, mais um pc em casa.

Mas se eu ligar os três cabos que saem dos modens adsl que tenho em um computador através de um switch, cada um com um endereço de rede diferente e depois três redes virtuais no Linux vai funcionar legal com três máquinas virtuais (como um cluster de três computadores virtuais).

Será que o wget + curl etc. não busca as partes em cada endereço de rede independentemente... Sem usar máquinas virtuais? Será que não tem um jeito de fazer isto? O jeito é pesquisar muito e fazer uns testes.

E valeu pelo seu trabalho, pois abriu muitas possibilidades...

[8] Comentário enviado por jaksonbt em 09/03/2011 - 23:09h

Tonyfrasouza, você teve uma boa ideia, pelo que percebi o CURL aceita especificar a interface mesmo veja o que achei no sitedo CURL:

--interface <name>

Perform an operation using a specified interface. You can enter interface name, IP address or host name. An example could look like:

curl --interface eth0:1 http://www.netscape.com/

If this option is used several times, the last one will be used.


Vou fazer uns testes e verificar se da certo. Seria realmente o fim da necessidade de maquinas virtuais.

[9] Comentário enviado por ramonzitos em 14/03/2011 - 16:13h

Boa dica!

[10] Comentário enviado por ramonzitos em 14/03/2011 - 16:54h

Programa web para isso:
http://klyscripts.agilityhoster.com/cdivcurl.cgi
Tem uma margem de erro de 50 MB no ultimo link. Transforma GB, MB e KB direto em Bytes.

[11] Comentário enviado por jaksonbt em 14/03/2011 - 17:28h

ramonzitos, esbarrei nesse problema da margem de erro também na hora de fazer a planilha, mas achei a solução, é só colocar sempre na ultima parte o ultimo range 999999999999900000.

Como no exemplo abaixo:

curl -o Devil.May.Cry.4.Full-Rip.Skullptura.Theevolution.org.By.Sniper1.part3.rar.5 -r75243620470121-999999999999900000 http://...


Colocando "999999999999900000" ele baixara até 931.322.574,61 gigabytes, ou até o final do arquivo, assim nunca ficara faltando uma parte!!

Issso já esta implementado na planilha, no caso do scrip basta alterar o range na hora de usar o ultimo comando. Exemplo:

Comando do PC15 (ultimo)
curl -o slackware-13.1-install-dvd.iso.15 -r4008636144-4347396096 http://slackware.mirrors.tds.net/pub/slackware/slackware-13.1-iso/slackware-13.1-install-dvd.iso

altera para:
curl -o slackware-13.1-install-dvd.iso.15 -r4008636144-999999999999900000 http://slackware.mirrors.tds.net/pub/slackware/slackware-13.1-iso/slackware-13.1-install-dvd.iso

E ele baixara todo o restante.
Gostei muito do script web e obrigado por ajudar.


[12] Comentário enviado por ramonzitos em 14/03/2011 - 19:14h

@jaksonbt: Valeu pelo toque, esta adicionado, fico feliz por ter gostado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts