Reprendre rsync sur SSH après une connexion brisée?

Je dois transférer de grandes quantités de données (> 80 Go) sur ssh en utilisant rsync. Tout fonctionne bien, mais la connexion DSL où les données de sauvegarde sont envoyées va tomber une fois toutes les 24h pendant 3 minutes (les fournisseurs de commutateurs ne sont pas une option).

Comment puis-je:

  1. Redémarrez-vous automatiquement le transfert lorsque la connexion est sauvegardée?

  2. Assurez-vous qu'il n'y a pas par hasard deux commandes rsync en cours d'exécution en même temps?

Les éléments suivants devraient être utiles:

 #!/bin/bash while [ 1 ] do rsync -avz --partial source dest if [ "$?" = "0" ] ; then echo "rsync completed normally" exit else echo "Rsync failure. Backing off and retrying..." sleep 180 fi done 

Lorsque la connexion disparaît, rsync quittera avec un code de sortie non nul. Ce script continue de redémarrer rsync, ce qui lui permet de continuer jusqu'à la fin de la synchronisation normalement.

Cela correspond beaucoup à la réponse de Peter, mais donne à l'utilisateur l'option de quel fichier distant il veut, et où il veut l'enregistrer (ainsi que la réalisation du rsync sur ssh). Remplacez l'UTILISATEUR et l'HÔTEL par votre nom d'utilisateur et votre hôte respectivement.

 #! / Bin / bash
 Echo -e "Veuillez entrer le chemin de fichier complet (échappé):"
 Lecture -r chemin
 Echo "Chemin: $ chemin"
 Echo -e "Entrez la destination:"
 Lire -d dst
 Echo "Destination: $ dst"
 Tandis que [1]
 faire
     Rsync --progress --parcial --append -vz -e ssh "USER @ HOST: $ path" $ dst
     Si ["$?"  = "0"];  puis
         Echo "rsync terminé normalement"
         Sortie
     autre
         Echo "rsync failure. Réessayer dans une minute ..."
         Dort 60
     Fi
 terminé

Les options rsync utilisées ici permettent les statistiques de progression pendant le transfert, la sauvegarde de fichiers partiels lors d'une défaillance inattendue et la possibilité d'ajouter des fichiers partiellement remplis lors du CV. L'option -v augmente la verbosité, l'option -z permet la compression (bonne pour une connexion lente, mais nécessite plus de puissance du processeur aux deux extrémités), et l'option -e nous permet de réaliser ce transfert sur ssh (le cryptage est toujours bon).

Remarque: Utilisez ceci uniquement si vous avez activé la clé publique activée avec votre ssh, sinon il vous demandera un mot de passe lors du redémarrage (tuer toutes les fonctionnalités du script).

Supervisor Daemon (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 basés sur Debian)

 [program:rsync-remoteserver] command=rsync -avz --progress [email protected]:/destination /backup-path stdout_logfile=/out-log-path stderr_logfile=/errlogpath