Me gustaría transferir archivos entre dos hosts remotos utilizando un shell local, pero parece que rsync no admite la sincronización si se especifican dos remotos de la siguiente manera:
$ rsync -vuar host1:/var/www host2:/var/www
The source and destination cannot both be remote.
¿Qué otras soluciones/comandos podría usar para lograr resultados similares?
Respuesta aceptada:
Como ha descubierto, no puede usar rsync con una fuente remota y un destino remoto. Suponiendo que los dos servidores no puedan comunicarse directamente entre sí, es posible usar ssh para hacer un túnel a través de su máquina local.
En lugar de
rsync -vuar host1:/var/www host2:/var/www
puedes usar esto
ssh -R localhost:50000:host2:22 host1 'rsync -e "ssh -p 50000" -vuar /var/www localhost:/var/www'
En caso de que te lo estés preguntando, el -R
La opción configura un canal inverso desde el puerto 50000 en el host1 que se asigna (a través de su máquina local) al puerto 22 en el host2. No hay conexión directa de host1 a host2.