Transferindo uma grande quantidade de dados entre continentes [duplicado]

12

Possível duplicado:
maneira gratuita de compartilhar arquivos grandes pela Internet?
Quais são algumas opções para transferir arquivos grandes sem usar a Internet?

O laboratório da minha esposa está fazendo um projeto aqui nos EUA com colaboradores em Cingapura. Ocasionalmente, eles precisam transferir uma grande quantidade de dados de imagem de alta dimensão (~ 10 GB compactados) pelos continentes. Com as tecnologias atuais, qual seria uma boa solução para esse cenário de uso?

Posso pensar em alguns, mas nenhum deles parece ideal:

  • Conexão direta via Internet: a taxa de transferência é de cerca de 500 KB / s, também sem uma ferramenta para lidar com erros / retransmissões.
  • Faça o upload para um servidor ou serviço comum, como o Dropbox: é difícil fazer o upload para um colaborador que não seja dos EUA.
  • Gravar discos ou copiar para HDs e enviar pelo Courier: a latência é significativa, além do trabalho extra para fazer uma cópia local.

Alguma sugestão?

Atualização: nenhuma das partes da colaboração é usuário experiente em tecnologia.

Frank
fonte
Imagem como nas imagens ou imagem como em um arquivo representando um DVD?
Daniel Beck
Imagens de alta dimensão, geradas por microscópios.
Frank
1
Então são vários arquivos muito grandes? Você poderia nos fornecer mais informações sobre contagem de arquivos, tamanho de arquivo individual e quantas dessas alterações são transferidas? São todos, alguns deles etc.?
Daniel Beck
Parece um trabalho para Sneakernet ou IPoAC .
Naftuli Kay 02/12

Respostas:

20

Eu sugiro que você use o rsync . O Rsync suporta o algoritmo de transferência delta; portanto, se seus arquivos forem alterados apenas parcialmente ou se a transferência anterior tiver sido encerrada de forma anormal, o Rsync é inteligente o suficiente para sincronizar apenas o que há de novo / alterado.

Existem várias portas do Rsync original para Windows e outros sistemas não compatíveis com Unix, gratuitos e não gratuitos. Consulte o artigo da Rsync Wikipedia para obter detalhes.

O Rsync sobre SSH é muito usado e funciona bem. Atualmente, 10 GB são uma quantidade relativamente pequena de dados e você não especificou o que "ocasionalmente" significa. Semanal? Diariamente? Por hora? Com uma taxa de transferência de 500 KB / s, levará cerca de 6 horas, não muito tempo. Se você precisar transferir os dados com frequência, provavelmente é melhor criar uma tarefa cron para iniciar o rsync automaticamente.

haimg
fonte
Não rsyncrequer seu próprio protocolo para deltas, exigindo um sistema de contrapartida capaz do outro lado?
Daniel Beck
@ DanielBeck: Não há nada nos documentos que diga que o rsync sobre SSH não pode usar deltacopy ... Basicamente, o cliente rsync executa outra cópia do rsync no servidor via ssh, então não vejo por que não funcionaria.
precisa
+1 Você tem um ponto lá. Isso deixa o requisito do Linux no servidor?
Daniel Beck
O rsyncalgoritmo delta do funciona quando transfere dados compactados binários ( .zipou .jpg)?
Aditya
@ DanielBeck: adicionei um link ao artigo da Wikipedia com várias portas rsync do Windows. Aparentemente, pelo menos alguns deles funcionam como um servidor, incluindo o ssh. Eu nunca usei nenhum deles embora.
precisa
12

A conexão através da Internet pode ser uma opção viável e um programa como o bittorrent é exatamente adequado para esse propósito, pois divide os arquivos em partes lógicas a serem enviadas pela Internet para serem reconstruídas na outra extremidade.

O Bittorrent também oferece correção automática de erros, reparo de peças danificadas e, se mais pessoas precisarem dos arquivos, elas terão o benefício de poderem fornecer o arquivo a partir de tantas fontes quantas já tenham (partes) do arquivo baixado.

As pessoas reconhecidas o veem como uma boa maneira de baixar filmes e coisas do tipo, mas ele tem muito mais usos legais.

Muitos clientes bittorrent também possuem rastreadores incorporados, para que você não precise ter um servidor dedicado para hospedar os arquivos.

Mokubai
fonte
2
Obrigado pela contribuição. O uso do BitTorrent nas redes acadêmicas pode deixar seus administradores nervosos. Além disso, a instalação e manutenção de um servidor rastreador pode não ser tão fácil para um usuário comum de computador.
Frank
2
Esse é um bom ponto, o bittorrent é ativamente proibido em muitas redes corporativas e acadêmicas. Com a administração adequada, você pode configurar uma lista branca nas redes de usuários ou máquinas que podem usar o bittorrent, embora isso signifique laços muito estreitos com os respectivos departamentos de TI para funcionar corretamente. Como mencionei, você não precisa necessariamente ter um servidor dedicado, pois ele pode ser incorporado a muitos programas clientes. Se não é um bom ajuste para a sua situação, então não se preocupe, me pareceu razoável considerando suas necessidades.
Mokubai
Se você estava usando bitorrent, também usar uma semente na web parece uma idéia inteligente
Journeyman Geek
(Como exemplo de um dos "usos mais legais" mencionados na resposta, o Facebook utiliza o bittorrent para implantar seu site, binário de 1 GB, em milhares de servidores de produção. Que pena que uma tecnologia seja descartada principalmente por causa de um de seus usos.)
Anton Strogonoff
6

Divida o arquivo em pedaços de, por exemplo, 50 MB (usando, por exemplo split). Calcule somas de verificação para todos eles (por exemplo md5sum). Faça o upload diretamente usando FTP e um cliente FTP tolerante a erros, como lftpno Linux. Transfira todos os pedaços e um arquivo contendo todas as somas de verificação.

No site remoto, verifique se todos os chunks possuem a soma de verificação desejada, reenvie os que falharam e remonte-os ao arquivo original (por exemplo, usando cat).

Reverta a localização do servidor (postei com a premissa de que o site de destino forneceu o servidor e você iniciou a transferência localmente quando os arquivos estiverem prontos) conforme necessário. Seu cliente FTP não deve se importar.


Eu tive problemas semelhantes no passado e usando um cliente FTP tolerante a erros funcionou. Nenhum bit foi invertido, apenas interrupções regulares da conexão, para que eu pudesse pular a criação de trechos e apenas carregar o arquivo. Ainda fornecemos uma soma de verificação para o arquivo completo, apenas por precaução.

Daniel Beck
fonte
3
Você precisa estar ciente, porém, que lftpnão anula uma transferência em andamento por qualquer motivo. Certifique-se de sempre ter espaço livre em disco suficiente no site de destino.
Daniel Beck
3

Uma variação da resposta de Daniel Beck é dividir os arquivos em partes da ordem de 50 MB a 200 MB e criar arquivos de paridade para todo o conjunto.

Agora você pode transferir os arquivos (incluindo os arquivos de paridade) com FTP, SCP ou qualquer outra coisa para o site remoto e fazer uma verificação após a chegada de todo o conjunto. Agora, se houver peças danificadas, elas poderão ser corrigidas pelos arquivos de paridade, se houver blocos suficientes. Isso depende mais ou menos de quantos arquivos estão danificados e de quantos arquivos de paridade você criou.

Arquivos de paridade são muito usados ​​na Usenet para enviar arquivos grandes. Na maioria das vezes, eles são divididos como arquivos RAR. Não é incomum enviar dados de até 50 a 60 GB dessa maneira.

Você definitivamente deve verificar o primeiro link e também pode dar uma olhada no QuickPar , uma ferramenta que pode ser usada para criar arquivos de paridade, verificar seus arquivos baixados e até restaurar arquivos danificados com os arquivos de paridade fornecidos.

Martijn B
fonte
+1 - Essa abordagem funciona bem na usenet, e os arquivos de paridade podem reparar uma quantidade surpreendente de dados ausentes. O lado negativo é o tempo de processamento necessário para dividir e gerar arquivos de paridade e para verificar a paridade e extrair arquivos após o recebimento.
amigos estão dizendo sobre deizel
1

É um arquivo grande de 10 GB? Poderia ser facilmente dividido?

Não brinquei muito com isso, mas me pareceu um conceito interessante e relativamente simples que pode funcionar nessa situação:

http://sendoid.com/

Craig H
fonte
Sendoid é bem legal, mas infelizmente o upload ainda será doloroso. Então, novamente, o problema persiste para todos os tipos que acredito, a menos que você queira enviar um HDD. +1, pois é fácil de usar.
dman
0

Disponibilize os dados via ftp / http / https / sftp / ftps (exigindo credenciais de logon) e use qualquer gerenciador de downloads no lado do cliente.

Os gerenciadores de download são projetados especificamente para recuperar dados, independentemente de quaisquer erros que possam ocorrer, para que eles se ajustem idealmente à sua tarefa.

Quanto ao servidor, um servidor FTP normalmente é o mais fácil de configurar. Você pode consultar uma lista na Wikipedia. HTTPS, SFTP e FTPS permitem criptografia (em FTP / HTTP puro, a senha é enviada em texto não criptografado), mas SFTP / FTPS são menos suportados pelo software cliente e a configuração do servidor HTTP / HTTPS é complicada.

ivan_pozdeev
fonte
1
O problema com o uso de http ou ftp é que existem erros de transmissão, você precisa enviar tudo novamente. rsync, bittorrent e outros protocolos podem verificar se os arquivos correspondem e retransmitem apenas as partes danificadas. Dados de paridade, como o QuickPar gera, também podem ajudar.
afrazier
Tanto o FTP quanto o HTTP incluem um recurso de retomada de transferências como uma extensão opcional suportada pela maioria dos servidores e praticamente todos os gerenciadores de download.
ivan_pozdeev
Eles podem ser retomados e, teoricamente, o TCP garante que os dados cheguem em ordem e com uma soma de verificação válida. No entanto, qualquer pessoa com uma grande transferência HTTP ou FTP corrompida aprendeu o valor de protocolos mais robustos ou algum tipo de ECC.
afrazier