Je souhaite transférer des fichiers entre deux hôtes distants à l'aide d'un shell local, mais il semble que rsync ne prenne pas en charge la synchronisation si deux télécommandes sont spécifiées comme suit :
$ rsync -vuar host1:/var/www host2:/var/www
The source and destination cannot both be remote.
Quelles autres solutions/commandes puis-je utiliser pour obtenir des résultats similaires ?
Réponse acceptée :
Comme vous l'avez découvert, vous ne pouvez pas utiliser rsync avec une source distante et une destination distante. En supposant que les deux serveurs ne peuvent pas se parler directement, il est possible d'utiliser ssh pour tunnel via votre machine locale.
Au lieu de
rsync -vuar host1:/var/www host2:/var/www
vous pouvez l'utiliser
ssh -R localhost:50000:host2:22 host1 'rsync -e "ssh -p 50000" -vuar /var/www localhost:/var/www'
Au cas où vous vous poseriez la question, le -R
L'option configure un canal inverse à partir du port 50000 sur host1 qui mappe (via votre machine locale) au port 22 sur host2. Il n'y a pas de connexion directe entre host1 et host2.