Tengo un caso en el que necesito mover datos de un servidor antiguo:anfitrión1a un nuevo servidor:anfitrión2. El problema es que el host1 no puede ver el host2., pero puedo usar otro servidor (servidor local) a SSH tanto para host1 como para host2.
Imagina que debería funcionar así:host1 -> host local -> host2
¿Cómo puedo usar rsync para copiar archivos entre host1 y host2? Probé este comando en el servidor localhost pero diceEl origen y el destino no pueden ser ambos remotos.
rsync -avz host1:/workspace host2:/rasv1/old_code-de
Respuesta1
Respuesta2
Puede utilizar el túnel para redirigir el rsync usando ssh.
Comience a iniciar sesión como usuario@host1 y cree el túnel al host2 a través de su "localhost" (llamémoslo "your_host" para evitar confusiones):
ssh <your_host_user>@<your_host> -L 8080:<host2_ip>:22
Mantenga esa terminal abierta, luego en otra terminal del tipo host1:
rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>
Por supuesto, puedes usar cualquier otro puerto en lugar del 8080. En cuanto a usar otro método que no involucre ssh, creo que es posible, pero no lo probé.
Respuesta3
Hasta donde yo sé, rsync no admite la copia de un servidor remoto a un servidor remoto.
Si solo necesita una copia simple del archivo, puede usar la opción scp
with -3
como lo señala @eblock
Si necesita rsync, puede montar ambos servidores en la carpeta local consshfs
sshfs user@server1:/path/on/server1 /local/path1
sshfs user@server2:/path/on/server2 /local/path2
Y luego copiar archivos entre carpetas locales:
rsync -av /local/path1 /local/path2
Para desmontar:
fusermount -u /local/path1
fusermount -u /local/path2
Aunque no estoy seguro de la velocidad/rendimiento de sshfs
.