Je dois transférer de grandes quantités de données (> 80 Go) sur SSH à l'aide de rsync. Tout fonctionne correctement, mais la connexion DSL à partir de laquelle les données de sauvegarde sont envoyées tombera une fois toutes les 24 heures pendant 3 minutes maximum (le changement de fournisseur n'est pas une option).
Comment puis-je:
Redémarrer automatiquement le transfert lorsque la connexion est rétablie?
Assurez-vous qu'il n'y a pas accidentellement deux commandes rsync s'exécutant en même temps?
linux
command-line
ssh
rsync
Sathyajith Bhat
la source
la source
while ./run_script; do echo "Retrying..."; done; echo "Done."
Assurez-vous derun_script
revenir0
en cas de succès.Réponses:
Ce qui suit devrait être utile:
Lorsque la connexion sera interrompue, rsync se fermera avec un code de sortie différent de zéro. Ce script continue simplement à réexécuter rsync, en le laissant continuer jusqu'à la fin de la synchronisation.
la source
Cela ressemble beaucoup à la réponse de Peter, mais donne à l'utilisateur la possibilité de choisir le fichier distant qu'il souhaite et l'emplacement où il veut l'enregistrer (ainsi que d'effectuer la synchronisation rsync sur ssh). Remplacez USER et HOST par votre nom d'utilisateur et votre hôte, respectivement.
Les options rsync utilisées ici activent les statistiques de progression pendant le transfert, l'enregistrement de fichiers partiels en cas d'échec imprévu et la possibilité d'ajouter des fichiers partiellement terminés à la reprise. L'option -v augmente la verbosité, l'option -z permet la compression (bon pour une connexion lente, mais requiert plus de puissance de l'unité centrale aux deux extrémités) et l'option -e nous permet d'effectuer ce transfert sur ssh (le cryptage est toujours bon).
Remarque: Utilisez cette option uniquement si la connexion par clé publique est activée avec votre ssh. Sinon, il vous demandera un mot de passe lors du redémarrage (ce qui supprime toutes les fonctionnalités du script).
la source
superviseur démon (un gestionnaire de contrôle de processus) pourrait très bien fonctionner après la création de certificats rsa des deux côtés, avec une configuration similaire, comme suit: (/ etc / supervisor / supervisord.conf est le chemin du fichier de configuration sur les systèmes Debian)
la source
La réponse de @ Peter semble être très utile, mais pour moi, il était important d'utiliser l'
--update
option. Après la reprise de la connexion, sans que--update
rsync ait essayé de tout synchroniser depuis le tout début. Avec--update
, les fichiers existants sont ignorés.rsync --partial --update --progress -r [SOURCE] [DESTINATION]
la source
--update
ignore les fichiers qui existent déjà ... Y compris ceux qui n'ont pas été complètement copiés dans la cible. Je pense que cela va à l'encontre de la plupart des cas d'utilisation.rsync --partial --update file1 remotehost:file1
. après avoir transféré 15%, j'ai cassé le transfert (kill-KILL).