Transferindo uma grande quantidade de dados entre continentes [duplicados]

12

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 (~ 10GB compactados) entre os 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, faltando também uma ferramenta para lidar com erros / retransmissões.
  • Fazer o upload para um servidor ou serviço comum, como o Dropbox: é difícil fazer o upload para um colaborador de fora dos EUA.
  • Gravar discos ou copiar para HDs e remessa por Courier: a latência é significativa, além do trabalho extra para fazer uma cópia local.

Alguma sugestão?

Atualização: nenhum dos participantes da colaboração é usuário especializado em tecnologia.

    
por Frank 02.12.2011 / 20:19

6 respostas

20

Eu sugiro que você use rsync . O Rsync suporta algoritmo de transferência delta, portanto, se seus arquivos são apenas parcialmente alterados, ou se a transferência anterior foi terminada 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 o Windows e outros sistemas não compatíveis com UNIX, tanto gratuitos quanto não-livres. Consulte o artigo da Wikipedia do Rsync para obter detalhes.

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

    
por 02.12.2011 / 20:45
12

A conexão através da Internet pode ser uma opção viável e um programa como o bittorrent é exatamente adequado para essa finalidade, pois irá dividir 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 receberão o benefício de poder receber o arquivo de quantas fontes já tiverem (partes do) arquivo baixado.

Pessoas concedidas vêem isso como uma boa maneira de fazer o download de filmes e coisas do tipo, mas o aplicativo tem muito mais usos legais.

Muitos clientes bittorrent também possuem trackers embutidos para que você não tenha um servidor dedicado para hospedar os arquivos.

    
por 02.12.2011 / 20:44
6

Divida o arquivo em partes de, e. 50MB (usando, por exemplo, split ). Compute as somas de verificação para todas elas (por exemplo, md5sum ). Carregue diretamente usando FTP e um cliente FTP tolerante a erros, como lftp no Linux. Transfira todos os pedaços e um arquivo contendo todos os checksums.

No site remoto, verifique se todos os fragmentos têm a soma de verificação desejada, insira novamente os que falharam e remonte-os ao arquivo original (por exemplo, usando cat ).

Reverter a localização do servidor (postei sob a suposição 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 de FTP não deve se importar.

Eu tive problemas semelhantes no passado e usei um cliente FTP tolerante a erros. Nenhum bit foi alterado, apenas abortos de conexão regulares, então eu poderia pular a criação de pedaços e apenas fazer o upload do arquivo. Nós ainda fornecemos uma soma de verificação para o arquivo completo, apenas no caso.

    
por 02.12.2011 / 20:29
3

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

Agora você pode transferir os arquivos (incluindo os arquivos de paridade) com FTP, SCP ou outra coisa para o site remoto e fazer uma verificação após a chegada de todo o conjunto. Agora, se houver partes danificadas, elas poderão ser consertadas 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.

Os arquivos de paridade são muito usados na Usenet para enviar arquivos grandes. Na maior parte do tempo eles são divididos como arquivos RAR. Não é incomum enviar dados de 50 a 60 GB dessa maneira.

Você deve definitivamente verificar o primeiro link e você também pode dar uma olhada em 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.

    
por 02.12.2011 / 23:46
1

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

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

link

    
por 02.12.2011 / 22:12
0

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

Gerenciadores de downloads são projetados especificamente para recuperar dados, independentemente de quaisquer erros que possam ocorrer, para que eles se encaixem de maneira ideal na 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 o SFTP / FTPS é menos suportado pelo software cliente e a configuração do servidor HTTP / HTTPS é complicada.

    
por 03.12.2011 / 01:19