Trasferimento di file affidabile tramite collegamento di rete lento o instabile


8

Devo trasferire un numero di file file su un collegamento a banda larga di bassa qualità su un server. I file sono di grandi dimensioni e impiegano circa 30 minuti per il trasferimento per file.

Uso scp, ma a volte si blocca: il trasferimento non fallisce con un errore, continua a funzionare, ma non vengono trasferiti ulteriori dati.

Quindi, sto cercando una soluzione di upload "fail-safe", che funzionerà anche se il collegamento fallisce per alcuni minuti o è altrimenti inaffidabile.

La mia idea è:

  1. dividere file di grandi dimensioni in piccole parti
  2. caricare parti, con timeout e riprovare in caso di errore

Domande:

  • esiste uno strumento pronto per l'esecuzione che implementa questa idea? (nessuna necessità specifica di scp. potrebbe essere ftp o qualsiasi altra cosa)
  • c'è un modo per rilevare quando scp si blocca? ((ovvero, è ancora in esecuzione, ma non trasferisce i dati)

Risposte:


15

Puoi usare rsync per copiare il tuo file da un computer all'altro. rsync può usare ssh come trasporto sottostante. Combina rsync --partialcon uno script come questo per riprovare in caso di errore di rete e dovresti essere in grado di spostare i tuoi file anche a fronte di errori di rete.

Un altro modo per farlo sarebbe quello di montare il filesystem remoto sul tuo computer locale sshfs -o reconnecte poi semplicemente cp i file. sshfs / Linux si occuperà del resto. Sulla base di alcuni test che ho fatto oggi, questo sembra essere molto più lento di rsync.

Infine, puoi configurare una VPN tra le due macchine. Ciò comporta la maggior parte del lavoro e una delle soluzioni di cui sopra è molto più semplice, ma risolverebbe il problema di una connessione di rete instabile. E come alcune persone hanno notato, questo può anche essere traballante. Esso può funzionare se la VPN è molto aggressivo sulle connessioni ristabilire, come OpenVPN è, ma le soluzioni sopra sono molto meglio.


1
Per far funzionare tutto questo, dovrai usare il --partialflag (o qualcosa che implica qualcosa di --partialsimile --inplace) altrimenti, ogni volta che il trasferimento viene interrotto, il trasferimento parziale verrà eliminato e dovrai ricominciare.
womble

Rsync sicuramente la strada da percorrere ... O il robocopy per Windows.
Brian Adkins,

In che modo esattamente una VPN aiuterebbe con una connessione flakey?
EEAA,

Il software VPN (ad esempio OpenVPN) può riconnettersi automaticamente in background, in modo trasparente a qualsiasi applicazione in esecuzione sulla VPN.
Michael Hampton,

@ErikA I miei pensieri precisamente: VPN su flakey link = flakey VPN che deve sempre riavviare. Aggiunge solo un secondo livello al problema, ovvero che il software di trasporto deve essere in grado di riavviare il trasferimento di file esattamente dove è stato interrotto.
Fiasco Labs,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.