Wenn ich meine Dateien kurz von einem Ubuntu-PC per Rsync an den VPS übertrage, läuft alles gut. Wenn ich jedoch dasselbe von Windows aus mache, erhalte ich die Fehlermeldung
rsync: Verbindung unerwartet geschlossen (bisher 0 Bytes empfangen)
[Receiver] rsync-Fehler: Fehler im rsync-Protokoll-Datenstrom (Code 12) bei io.c(235) [Receiver=3.1.3]
Obwohl Rsync im Gegensatz zu Linux nicht standardmäßig für Windows installiert ist, habe ich Rsync auf meinem Windows-PC installiert.
Umweltdaten
- Lokaler PC Nr. 1: Windows 10
- Lokaler PC Nr. 2: Ubuntu 20.04.5
- VPS: Ubuntu 20.04
Vorbereitungen
Ich habe den VPS mit klarem Ubuntu initialisiert. Um einige Variablen aus den Gleichungen zu eliminieren, habe ich einige Dinge getan, die aus Sicherheitsgründen bei einem echten (nicht experimentellen wie in meinem Fall) VPS nicht getan werden sollten.
- Ich werde die Daten mit dem Root-Konto übermitteln
- Ich werde die SLL nicht verwenden
Außerdem habe ich die/var/www/beispiel.comVerzeichnis beim VPS, um den Fehler zu vermeiden, dass die Daten nicht synchronisiert werden können, weil das Zielverzeichnis nicht erstellt wurde.
Ziel
Senden Sie den Inhalt von06-ProduktionsaufbauVerzeichnis zum VPS.
Ablauf des Experiments
Geben Sie auf dem Windows-Terminal ein
rsync -azve ssh --progress 06-ProductionBuild [email protected]:/var/www/example.com
Das Passwort wurde abgefragt. Nach der Eingabe des Passwortes erhalte ich:
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.3]
Wenn ich einfach das falsche Passwort eingegeben habe, lautete der Fehler Permission denied, please try again
:
Jetzt derselbe Befehl vom Ubuntu-PC:
Alles war gut.
Bitte geben Sie mir ein paar Hinweise.
Habe es von WSL aus versucht - es war in Ordnung. Scheint so, als ob etwas nicht stimmt mitRsync unter Windows.
Antwort1
ssh
Dies liegt anscheinend daran, dass Sie das „System“ -Programm (native Version von OpenSSH von Microsoft) verwenden würden, wenn Sie nur angeben -e ssh
. (Genauer gesagt liegt es wahrscheinlich daran, dass die PATH-Priorität des bin
Verzeichnisses der (cw)rsync-Installation niedriger ist als die des anderen betreffenden Pfads).
In meinem Test ist die einfachste Problemumgehung, stattdessen anzugeben , dass das mitgelieferte (Cygwin) verwendet -e /bin/ssh
wird . (Die Cygwin-„Magie“ sollte die Wurzel des Pfads automatisch für Sie auflösen, egal ob Chocolatey oder nicht.)rsync
ssh
Der Verdienst (für die Entdeckung der Ursache) gebührt dem KommentarHier, obwohl der dort angebotene Ansatz unnötig schwerfällig erscheint. (Nun, es sei denn, Sie haben einen Grund, den ssh
Build von Microsoft zu verwenden.)
EDIT: eigentlich scheint mir die Erklärung in der verlinkten Seite nicht ganz richtig zu sein. In meinem Test würde das „System“-SSH tatsächlich known_hosts
an einem anderen Ort verwendet, aber es fordert mich auf, den Server ebenfalls zur Liste hinzuzufügen, wenn ich versuche, mich zum ersten Mal damit zu verbinden, und erstellt known_hosts
erfolgreich seinen eigenen. Es hat mich auch beim späteren Versuch nicht danach gefragt, also KANN es anscheinend seinen eigenen finden, um ihn zurückzulesen. Daher habe ich keine Ahnung, wie ihm sein Vorschlag geholfen hat, und die Angabe der Option/des Pfads funktioniert bei mir sowieso nicht.