Die Dateien von Ubuntu wurden erfolgreich übermittelt, aber von Windows erhielt ich den Fehler „Fehler im Rsync-Protokolldatenstrom (Code 12)“.

Die Dateien von Ubuntu wurden erfolgreich übermittelt, aber von Windows erhielt ich den Fehler „Fehler im Rsync-Protokolldatenstrom (Code 12)“.

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.

Bildbeschreibung hier eingeben

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

Bildbeschreibung hier eingeben

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]

Bildbeschreibung hier eingeben

Wenn ich einfach das falsche Passwort eingegeben habe, lautete der Fehler Permission denied, please try again:

Jetzt derselbe Befehl vom Ubuntu-PC:

Bildbeschreibung hier eingeben

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.

Bildbeschreibung hier eingeben

Antwort1

sshDies 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 binVerzeichnisses 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/sshwird . (Die Cygwin-„Magie“ sollte die Wurzel des Pfads automatisch für Sie auflösen, egal ob Chocolatey oder nicht.)rsyncssh

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 sshBuild 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_hostsan 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_hostserfolgreich 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.

verwandte Informationen