Transferência confiável de arquivos através de um link de rede lento ou irregular

8

Preciso transferir vários arquivos em um link de banda larga de baixa qualidade para um servidor. Os arquivos são grandes e levam aproximadamente 30 minutos para serem transferidos por arquivo.

Uso scp, mas às vezes trava - a transferência não falha com um erro, continua em execução, mas nenhum dado adicional é transferido.

Portanto, estou procurando uma solução de upload "à prova de falhas", que funcione mesmo se o link falhar por alguns minutos ou não for confiável.

Minha ideia é:

  1. dividir arquivos grandes em partes pequenas
  2. carregar peças, com tempo limite e tentar novamente se falhar

Questões:

  • existe uma ferramenta pronta para executar que implemente essa ideia? (nenhuma necessidade específica de scp. poderia ser ftp ou qualquer outra coisa)
  • existe uma maneira de detectar quando o scp trava? (ou seja, ele ainda está em execução, mas não transfere dados)
user1219721
fonte

Respostas:

15

Você pode usar o rsync para copiar seu arquivo de um computador para outro. O rsync pode usar ssh como seu transporte subjacente. Combine rsync --partialcom um script como este para tentar novamente em caso de falha na rede e você poderá mover seus arquivos mesmo diante de erros de rede.

Outra maneira de fazer isso seria montar o sistema de arquivos remoto em seu computador local sshfs -o reconnecte depois apenas cp o (s) arquivo (s). O sshfs / Linux cuidará do resto. Com base em alguns testes que fiz hoje, isso parece muito mais lento que o rsync.

Por fim, você pode configurar uma VPN entre as duas máquinas. Isso envolve mais trabalho e qualquer uma das soluções acima é muito mais fácil, mas resolveria o problema de uma conexão de rede inadequada. E, como algumas pessoas observaram, isso também pode ser esquisito. Ele pode funcionar se o VPN é muito agressivo sobre conexões restabelecendo, como OpenVPN é, mas as soluções acima são muito melhores.

Michael Hampton
fonte
1
Para fazer isso funcionar, você precisará usar o --partialsinalizador (ou algo que implique --partialcomo --inplace) caso contrário, sempre que a transferência for interrompida, a transferência parcial será excluída e você terá que começar novamente.
Womble
Rsync definitivamente o caminho a percorrer ... Ou robocopy para windows.
22412 Brian Adkins
Como exatamente uma VPN ajudaria com uma conexão flakey?
EEAA
O software VPN (por exemplo, OpenVPN) pode se reconectar automaticamente em segundo plano, de forma transparente a qualquer aplicativo que esteja sendo executado na VPN.
Michael Hampton
@ErikA Meus pensamentos com precisão - VPN sobre flakey link = flakey VPN que sempre precisa reiniciar. Ele apenas adiciona um segundo nível ao problema: o software de transporte deve poder reiniciar a transferência de arquivos exatamente onde foi interrompido.
Fiasco Labs