Archiv der Kategorie: RSync

RSYNC Fehlermeldung: protocol version mismatch — is your shell clean? (rsync error: protocol incompatibility (code 2) at compat.c(171) [receiver=3.0.4])

Als ich ein Script testen wollte, das ein Verzeichnis mit rsync und ssh von Server1 auf Server2 spiegeln sollte, verweigerte rsync seinen Dienst mit folgender Fehlermeldung:

protocol version mismatch — is your shell clean?
rsync error: protocol incompatibility (code 2) at compat.c(171) [receiver=3.0.4]

Eine Webrecherche brachte die Lösung des Problems. Eigentlich hätte man mit der Fehlermeldung „is your shell clean?“ selbst darauf kommen können.

Auf dem Server, auf den ich mit rsync zugreifen wollte, befand sich ein Startskript .bashrc mit folgendem Eintrag:

LOGINSTATION=`who | cut -d“(“ -f2 | cut -d“)“ -f1`
echo Login von: $LOGINSTATION

Dieses Skript produzierte bei einem Login eine Ausgabe wie diese:

Login von: 11-66-100-10-dynip.superkabel.de

Diese Meldung brachte nun RSYNC aus dem Tritt. Anscheinend setzt rsync eine Loginshell ohne zusätzliche Meldungen vorraus. Deshalb auch die Fehlermeldung: “is your shell clean?”

Wenn die Meldung aus der .bashrc entfernt wird, funktionierte RSYNC wieder wie gewohnt.

Synchronisation von einem Verzeichnis auf einem Remoteserver mit einem Verzeichnis auf dem lokalen Server mittels rsync

Rsync ist ein Programm zum Spiegeln von Verzeichnissen. Dabei kopiert Rsync die Daten inkrementell, d.h. es werden nur veränderte Daten übertragen.

Der Befehl

rsync -v -a –delete -e ssh user2@remoteserver.net:/home/user2/daten/ /home/user1/backup/

gleicht das Verzeichnis /home/user2/daten/ auf dem entfernten Server mit dem Verzeichnis /home/user1/backup/ auf dem lokalen Server ab.

Die Optionen bedeuten im einzelnen:

-v = verbose – Erweiterte Ausgabe, nützlich bei der Fehlersuche
-a = Kombiniert mehrere andere Optionen. Sorgt unter anderem dafür, dass Unterverzeichnisse rekursiv mitkopiert werden, symbolische Links kopiert werden, Benutzer- und Gruppenrechte sowie Zeiten erhalten bleiben.

–delete sorgt dafür, dass Dateien auf dem Ziel, die auf der Quelle nicht mehr existieren, gelöscht werden (Mirroring). Vorsicht bei der Verwendung dieser Option.

-e ssh sorgt dafür, dass die rsync Verbindung durch eine verschlüsselte SSH Verbindung getunnelt wird.