Tenho um caso em que preciso mover dados de um servidor antigo:host1para um novo servidor:host2. O problema é que o host1 não consegue ver o host2, mas posso usar outro servidor (host local) para SSH para host1 e host2.
Imagine que deveria funcionar assim:host1 -> localhost -> host2
Como posso usar o rsync para copiar arquivos entre host1 e host2? Eu tentei este comando no servidor localhost, mas ele dizA origem e o destino não podem ser ambos remotos.
rsync -avz host1:/workspace host2:/rasv1/old_code-de
Responder1
Responder2
Você pode usar o tunelamento para redirecionar o rsync usando ssh.
Comece logado como user@host1 e crie o túnel para host2 através do seu "localhost" (vamos chamá-lo de "your_host" para evitar confusão):
ssh <your_host_user>@<your_host> -L 8080:<host2_ip>:22
Mantenha esse terminal aberto e, em seguida, em outro terminal do tipo host1:
rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>
Claro que você pode usar qualquer outra porta ao invés da 8080. Quanto a usar outro método que não envolva ssh, acho que é possível mas não testei.
Responder3
Pelo que sei, o rsync não suporta cópia de servidor remoto para servidor remoto.
Se você precisar apenas de uma cópia simples do arquivo, poderá usar a opção scp
with -3
conforme apontado por @eblock
Se você precisar do rsync, poderá montar os dois servidores na pasta local comsshfs
sshfs user@server1:/path/on/server1 /local/path1
sshfs user@server2:/path/on/server2 /local/path2
E copie os arquivos entre pastas locais:
rsync -av /local/path1 /local/path2
Para desmontar:
fusermount -u /local/path1
fusermount -u /local/path2
Embora eu não tenha certeza sobre a velocidade/desempenho do sshfs
.