Rsync über ssh funktioniert jedes Mal hervorragend.
Wenn Sie jedoch versuchen, eine Synchronisierung mit einem Host durchzuführen, der nur SFTP-Anmeldungen, nicht jedoch SSH-Anmeldungen zulässt, tritt der folgende Fehler auf:
rsync -av / source ssh user @ remotehost: / target /
Nicht übereinstimmende Protokollversion - Ist Ihre Shell sauber? (Eine Erklärung finden Sie in der rsync-Manpage.) rsync-Fehler: Protokollinkompatibilität (Code 2) bei compat.c (171) [sender = 3.0.6]
Hier ist der relevante Abschnitt aus der rsync-Manpage:
Diese Meldung wird normalerweise von Ihren Startskripten oder der Remote-Shell-Funktion verursacht, die unerwünschten Datenmüll auf dem Stream erzeugt, den rsync für den Transport verwendet. Um dieses Problem zu diagnostizieren, führen Sie Ihre Remote-Shell folgendermaßen aus:
ssh remotehost /bin/true > out.dat
dann schau mal auf out.dat. Wenn alles richtig funktioniert, sollte out.dat eine Null-Länge-Datei sein. Wenn Sie den obigen Fehler von rsync erhalten, werden Sie wahrscheinlich feststellen, dass out.dat Text oder Daten enthält. Schauen Sie sich den Inhalt an und versuchen Sie herauszufinden, was ihn produziert. Die häufigste Ursache sind falsch konfigurierte Shell-Startskripts (z. B. .cshrc oder .profile), die Ausgabeanweisungen für nicht interaktive Anmeldungen enthalten.
Dies auf meinem System zu versuchen, ergab in out.dat Folgendes:
ssh-dummy-shell: Kommando nicht erlaubt.
Wie ich dachte, erlaubt der Host keine SSH-Anmeldungen.
Der folgende Link zeigt, dass es möglich ist, diese Aufgabe mithilfe von Fuse mit sshfs auszuführen. Sie ist jedoch extrem langsam und nicht für den produktiven Einsatz geeignet.
Gibt es eine Chance, rsync sftp zum Laufen zu bringen?
csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csync
Siehe diese Antwort .
lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port