Gibt es eine einfache Möglichkeit, Dateien zwischen zwei SSH / SFTP-Servern zu übertragen? Die perfekte Lösung wäre FileZilla, mit dem Sie jedoch nur eine Verbindung zwischen lokal und remote herstellen können, nicht jedoch zwischen remote und remote.
Theoretisch könnte ich zwei Nautilus-Fenster öffnen und eine Verbindung zu einigen herstellen ssh://server1/path/to/folder
und ssh://server2/path/to/folder
dann einfach die Dateien von einer zur anderen Seite ziehen. Ich habe die Erfahrung gemacht, dass dies sehr instabil ist. Das Übertragen von Dateien in einer Größe von zB 10 MB ist kein Problem, aber das Übertragen von zB 10 GB führte häufig dazu, dass Nautilus sich aufhängt und dort ps -e | grep nautilus
-> benötigt kill -9 <pid>
. Das Gleiche habe ich auch mit Nemo und Caja getestet. Obwohl Nemo stabiler ist als die beiden anderen, ist es immer noch nicht perfekt und bricht auch von Zeit zu Zeit. FileZilla ist extrem stabil, hat es nie wirklich kaputt gemacht, ist aber aufgrund der erwähnten Tatsache, dass es nur eine Verbindung zu einem einzelnen SSH-Server herstellen kann, nicht sehr flexibel.
Natürlich könnte ich auch einen Ordner mit mounten sshfs
, aber das ist eine unpraktische Lösung. Es ist zu viel Vorarbeit erforderlich, um einen einfachen Transfer auszuführen.
Gibt es eine App, die Übertragungen zwischen zwei SSH-Servern ohne Unterbrechung verarbeiten kann? Perfekt wäre so etwas wie FileZilla, das den Job wieder aufnimmt, wenn die Verbindung unterbrochen wird.
Antworten:
Wenn Sie mit einer Ubuntu-Version arbeiten, die noch unterstützt wird, stellt Ihr
scp
Befehl den-3
Schalter bereit , der das Kopieren von Dateien von remote1 nach remote2 über localhost ermöglicht :Sie können den
-3
Schalter auch weglassen , benötigen dann aber den öffentlichen Schlüssel (id_rsa.pub
) vonuser1@remote1
in der Dateiauthorized_keys
vonuser2@remote2
:scp
dannssh user1@remote1
erstmal unter die haube und ab dascp /path/to/file1 user2@remote2:/path/to/file2
. Aus diesem Grund muss der Berechtigungsnachweis anders als die-3
Lösung verteilt werden.Mit anderen Worten:
scp -3 remote1:file1 remote2:file2
überträgt die Datei von remote1 zu localhost und dann zurück zu remote2 . Die Daten werden von remote1 → localhost → remote2 übertragen . Der localhost ist daher in diesem Szenario die dritte Partei-3
. Damit dies funktioniert, benötigen Sie die Anmeldeinformationen von localhost auf remote1 und remote2, da localhost eine Verbindung zu beiden herstellt.scp remote1:file1 remote2:file2
kopiert die Datei direkt von remote1 nach remote2 mit der Geschwindigkeit, mit der sie miteinander verbunden sind. localhost ist hier nicht beteiligt (abgesehen von der Ausgabe des Befehls). Die Daten werden remote1 → remote2 übertragen . Damit dies funktioniert, müssen Sie die Anmeldeinformationen von localhost nur auf remote1 sondern zusätzlich müssen Sie die Anmeldeinformationen von remote1 auf remote2 weil localhost Connects remote1 nur dann remote1 Connects zu remote2 .Wenn möglich, würde ich den zweiten Ansatz wählen. Wie einige Kommentare bereits sagen: In der
Regel istdas Netzwerkkabel zwischen remote1 und remote2 viel dicker als das Kabel zwischen ihnen und localhost .quelle
-3
.In den meisten Fällen können sich zwei SSH-Server gegenseitig erreichen (oder mindestens einer kann den anderen erreichen), und in den meisten Fällen ist das Internet der Arbeitsstation weitaus schlechter als bei beiden Servern.
Wenn ja, ist es der richtige Weg, einen Server auf den anderen zu übertragen.
Überprüfen Sie
nohup.out
auf Server1 auf Fehler.Wenn die Erreichbarkeit des Servers umgekehrt ist, können Sie umkehren, welcher Computer der Master ist:
quelle
Vielleicht könnten Sie eines von mehreren GUI-Frontends für rsync verwenden:
Gibt es eine GUI-Anwendung für den Befehl rsync?
Oder Sie können rsync direkt von der Befehlszeile aus verwenden, um eine Verbindung zu beiden Remoteservern herzustellen:
"So synchronisieren Sie Dateien zwischen zwei Remotes"
Ich logge mich oft mit ssh auf einem Server ein und benutze dann rsync von der Kommandozeile dieses Servers , um Dateien auf den anderen Remote-Server zu pushen oder zu ziehen .
Der rsync ist intelligent genug, um einige Arbeiten auszuführen. Wenn dann etwas schief geht und den Prozess unterbricht, kann er später dort fortgesetzt werden, wo er aufgehört hat.
quelle
Sie müssen das SCP-Protokoll verwenden.
scp file you want to transfer login@address_of_second_server:/path_where_you_want_to_save
quelle