Wie verwende ich rsync, um Dateien zwischen zwei Remote-Servern basierend auf dem Localhost-Server zu kopieren?

Wie verwende ich rsync, um Dateien zwischen zwei Remote-Servern basierend auf dem Localhost-Server zu kopieren?

Ich habe einen Fall, bei dem ich Daten von einem alten Server verschieben muss:host1auf einen neuen Server:host2. Das Problem ist, dass Host1 Host2 nicht sehen kann, aber ich kann einen anderen Server verwenden (lokaler Host), um per SSH sowohl auf Host1 als auch auf Host2 zuzugreifen.

Stellen Sie sich vor, es sollte so funktionieren:Host1 -> lokaler Host -> Host2

Wie kann ich mit rsync Dateien zwischen Host1 und Host2 kopieren? Ich habe diesen Befehl auf dem lokalen Server ausprobiert, aber es heißtQuelle und Ziel können nicht beide remote sein.

 rsync -avz host1:/workspace host2:/rasv1/old_code-de

Antwort1

Ich landete bei der Lösung vonhttps://unix.stackexchange.com/users/312074/eblock

mit

scp -3 host1 host2

Antwort2

Sie können Tunneling verwenden, um Rsync mithilfe von SSH umzuleiten.

Melden Sie sich zu Beginn als Benutzer@Host1 an und erstellen Sie den Tunnel zu Host2 über Ihren „localhost“ (um Verwirrung zu vermeiden, nennen wir ihn „Ihren_Host“):

ssh <your_host_user>@<your_host> -L 8080:<host2_ip>:22

Lassen Sie das Terminal geöffnet und geben Sie dann auf einem anderen Terminal von Host1 Folgendes ein:

rsync -avzh -e "ssh -p 8080" <source_file> <host2_user>@127.0.0.1:/<target_folder>

Natürlich können Sie anstelle von 8080 auch jeden anderen Port verwenden. Ich denke, dass die Verwendung einer anderen Methode ohne SSH möglich ist, habe es aber nicht getestet.

Antwort3

Soweit mir bekannt ist, unterstützt rsync das Kopieren von einem Remote-Server zu einem Remote-Server nicht.

Wenn Sie nur eine einfache Dateikopie benötigen, können Sie einfach die Option verwenden, scpwie -3von @eblock angegeben

 

Wenn Sie rsync benötigen, können Sie beide Server in einem lokalen Ordner mounten mitsshfs

sshfs user@server1:/path/on/server1 /local/path1
sshfs user@server2:/path/on/server2 /local/path2

Und dann Dateien zwischen lokalen Ordnern kopieren:

rsync -av /local/path1 /local/path2

So trennen Sie die Bereitstellung:

fusermount -u /local/path1
fusermount -u /local/path2

Allerdings bin ich mir hinsichtlich der Geschwindigkeit/Leistung nicht sicher sshfs.

verwandte Informationen