Transférer salement un dossier entre deux serveurs avec rsync et sshpass
Pas de clé SSH, mais l'utilitaire sshpass, méthode donc à utiliser ponctuellement pour un besoin unique, quick & dirty.
Commande lancée sur le serveur DESTINATION:
sshpass -p MOT_DE_PASSE_SOURCE rsync -avzh UTILISATEUR_SOURCE@SOURCE.DOMAIN.TLD:/chemin/du/dossier/source/ /chemin/du/dossier/destination/
Là, c'est un simple transfert. Si on veut faire une synchro unidirectionnelle SOURCE > DESTINATION, rajouter le paramètre --delete, ce qui signifie que les fichiers non présents sur SOURCE mais présents sur DESTINATION seront supprimés de DESTINATION:
sshpass -p MOT_DE_PASSE_SOURCE rsync -avzh UTILISATEUR_SOURCE@SOURCE.DOMAIN.TLD:/chemin/du/dossier/source/ /chemin/du/dossier/destination/ --delete
Pour rappel, si on veut faire tourner ça en tâche de fond, sans sortie sur stdout ni stderr, on rajoute encore à la fin de la ligne de commande " > /dev/null 2>&1 &":
sshpass -p MOT_DE_PASSE_SOURCE rsync -avzh UTILISATEUR_SOURCE@SOURCE.DOMAIN.TLD:/chemin/du/dossier/source/ /chemin/du/dossier/destination/ --delete > /dev/null 2>&1 &
Un cran plus loin, une fois lancée la commande précédente, si on veut qu'elle continue à tourner toute seule même après déconnexion de notre session (volontairement ou accidentellement), lancer d'abord la commande jobs, qui liste comme son nom l'indique les tâches en cours:
jobs
Chaque élément de la liste commence par un identifiant numérique entre crochets, par exemple:
[1]+ Running sshpass -p MOT_DE_PASSE_SOURCE rsync -avzh .... --delete > /dev/null 2>&1 &
Il vous suffit d'exécuter la commande suivante, reprenant l'identifiant du job que l'on veut libérer, ici le "1":
disown -h %1
Remplacez bien sûr le "1" par votre identifiant à vous.