Transfert de fichiers fiable sur une liaison réseau lente ou irrégulière

8

J'ai besoin de transférer un certain nombre de fichiers sur une liaison haut débit de faible qualité vers un serveur. Les fichiers sont volumineux et prennent environ 30 minutes à transférer par fichier.

J'utilise scp, mais il se bloque parfois - le transfert n'échoue pas avec une erreur, il continue de fonctionner, mais aucune autre donnée n'est transférée.

Donc, je recherche une solution de téléchargement "à sécurité intégrée", qui fonctionnera même si le lien échoue pendant quelques minutes ou n'est pas fiable.

Mon idée est:

  1. diviser un gros fichier en petites parties
  2. télécharger des pièces, avec délai d'attente et réessayer en cas d'échec

Des questions:

  • existe-t-il un outil prêt à fonctionner qui met en œuvre cette idée? (aucun besoin spécifique de scp. ne peut être ftp ou autre)
  • existe-t-il un moyen de détecter quand scp se bloque? ((c'est-à-dire qu'il fonctionne toujours, mais ne transfère pas de données)
user1219721
la source

Réponses:

15

Vous pouvez utiliser rsync pour copier votre fichier d'un ordinateur à l'autre. rsync peut utiliser ssh comme transport sous-jacent. Combinez-le rsync --partialavec un script tel que celui-ci pour réessayer en cas de défaillance du réseau et vous devriez pouvoir déplacer vos fichiers même en cas d'erreurs de réseau.

Une autre façon de le faire serait de monter le système de fichiers distant sur votre ordinateur local avec sshfs -o reconnect, puis de simplement cp le (s) fichier (s). sshfs / Linux s'occupe du reste. Sur la base de certains tests que j'ai effectués aujourd'hui, cela semble être beaucoup plus lent que rsync.

Enfin, vous pouvez configurer un VPN entre les deux machines. Cela implique le plus de travail et l'une des solutions ci-dessus est beaucoup plus facile, mais cela résoudrait le problème d'une connexion réseau instable. Et comme certaines personnes l'ont remarqué, cela peut aussi être floconneux. Cela peut fonctionner si le VPN est très agressif pour rétablir les connexions, comme OpenVPN, mais les solutions ci-dessus sont bien meilleures.

Michael Hampton
la source
1
Pour que cela fonctionne, vous devrez utiliser l' --partialindicateur (ou quelque chose qui implique --partialcomme --inplace) sinon, chaque fois que le transfert est interrompu, le transfert partiel sera supprimé et vous devrez recommencer.
womble
Rsync définitivement la voie à suivre ... Ou la robocopie pour Windows.
Brian Adkins
Comment un VPN aiderait-il exactement avec une connexion en flocons?
EEAA
Le logiciel VPN (par exemple OpenVPN) peut se reconnecter automatiquement en arrière-plan, de manière transparente à toutes les applications qui s'exécutent sur le VPN.
Michael Hampton
@ErikA Mes pensées précisément - VPN sur lien flakey = VPN flakey qui doit toujours redémarrer. Cela ajoute seulement un deuxième niveau au problème qui est que le logiciel de transport doit pouvoir redémarrer le transfert de fichiers exactement là où il a été interrompu.
Fiasco Labs du