Wie kann ich Dateien zwischen zwei Remote-Remotes mit einem expliziten Port und unterschiedlichen Benutzernamen per Rsync synchronisieren?

Wie kann ich Dateien zwischen zwei Remote-Remotes mit einem expliziten Port und unterschiedlichen Benutzernamen per Rsync synchronisieren?

Ich möchte Dateien zwischen zwei Remote-Servern per Rsync übertragen. Ich habe versucht, der nächsten Lösung von @roaima zu folgen:https://unix.stackexchange.com/a/183516/137526, aber ich brauche aus zwei Gründen eine feinere Lösung:

  1. Einer der Remote-Server hat einen nicht standardmäßigen Port für SSH, daher muss ich den Port mit der Option -p angeben.
  2. Ich kann per SSH auf beide Server zugreifen, muss aber unterschiedliche Benutzernamen verwenden und diese daher ausdrücklich angeben.

Darüber hinaus ist in der zitierten Lösung nicht klar, welcher Pfad auf dem Quellhost und welcher auf dem Zielhost liegt, da beide als /var/www angezeigt werden.

Ich habe verschiedene Varianten des nächsten Befehls ausprobiert, aber ohne Erfolg:

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/'

Antwort1

Was Sie dort tun, ist zumindest „kompliziert“. Soweit ich es verstanden habe, stellen Sie eine Verbindung zu einem Server her und sagen ihm, er soll mit einem anderen Server synchronisieren.

Zur einfacheren Verwendung können Sie Port und Benutzer angeben, die in der lokalen SSH-Konfiguration für einen bestimmten Host verwendet werden sollen. Fügen Sie beispielsweise die folgenden Zeilen zur Datei ~/.ssh/config (/home/username2/.ssh/config) auf dem Quellhost hinzu:

machine dest_host
 user username1
 port 50000

Sie können Dateien vom Quellhost mit folgendem Befehl zum Zielhost rsyncen:

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

Angenommen, der SSHD des Zielhosts lauscht auf Port 50000. Möglicherweise möchten Sie sich auch die Option „-r“ / „-u“ von rsync ansehen.

Antwort2

Die elegante Lösung, die ich gefunden habe, ist die Verwendung scp.

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

Es funktioniert perfekt. Beachten Sie, dass Sie für zwei Hosts zwei verschiedene Benutzernamen verwenden. Sie können auch Platzhalter im Dateinamen verwenden, wie z . B. *.

verwandte Informationen