¿Cómo sincronizar archivos entre dos controles remotos con un puerto explícito y diferentes nombres de usuario?

¿Cómo sincronizar archivos entre dos controles remotos con un puerto explícito y diferentes nombres de usuario?

Quiero sincronizar archivos entre dos servidores remotos. Intenté seguir la siguiente solución de @roaima:https://unix.stackexchange.com/a/183516/137526, pero necesito una solución más delicada, por dos razones:

  1. Uno de los servidores remotos tiene un puerto no predeterminado para ssh, por lo que necesito especificar el puerto con la opción -p.
  2. Puedo enviar ssh a ambos servidores, pero tuve que usar nombres de usuario diferentes, por lo que debe especificarse explícitamente.

Además, en la solución citada no está claro cuál es la ruta en el host de origen y cuál está en el de destino, ya que ambas aparecen como /var/www.

Probé diferentes variaciones del siguiente comando, pero sin éxito:

ssh -R localhost:50000:username1@dest_host:22 username2@source_host 'rsync -e "ssh -p 50000" -avzt --progress --partial /path/on/source/ localhost:/path/on/destination/'

Respuesta1

Lo que estás haciendo allí es al menos "complicado". Hasta donde tengo entendido, te conectas a un servidor y le dices que se sincronice con otro servidor.

Para facilitar su uso, puede especificar el puerto y el usuario que se utilizarán en la configuración ssh local para un host en particular. por ejemplo, si agrega las siguientes líneas al archivo ~/.ssh/config (/home/username2/.ssh/config) en source_host:

machine dest_host
 user username1
 port 50000

Puede sincronizar archivos con dest_host desde source_host con:

ssh username2@source_host 'rsync -e ssh /source/path/on/source_host dest_host:path_below_username1_home

Suponiendo que el sshd de dest_host escucha en el puerto 50000. Es posible que también desee consultar la opción "-r" / "-u" de rsync.

Respuesta2

La solución elegante que encontré es usar scp.

scp -3 -Cp [email protected]:/path/file*.txt [email protected]:/path/

Funciona perfectamente. Observe el uso de dos nombres de usuario diferentes para dos hosts. También puedes usar comodines en el nombre del archivo como *.

información relacionada