rsync Code 23 - Das leidige Problem mit den Umlauten
rsync ermöglicht die einfache Synchronisation von Dateien zwischen zwei Computern.
Der Übertrag funktioniert zuverlässig jedoch gibt es zwischen Mac OS X und Linux ein Problem mit den Umlauten, das zum Fehler code 23 führen kann.
Möchte man von einem Apple PC mit Mac OS X und rsync Dateien auf einen Linux-Server oder auch die andere Richtung übertragen, wird wahrscheinlich irgendwann der folgende Fehler auftauchen:
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1350) [sender=3.2.3]
Die Ursache ist zu einer sehr hohen Wahrscheinlichkeit auf Umlaute in Ordner- / Datei-Namen zurückzuführen.
Die beiden Betriebssysteme Mac OS und die Linux-Distribution haben bei der Kodierung ein Problem, dass rsync nicht so lösen kann.
Die mögliche Ursache von Code 23
Ist in einem Dateinamen ein Umlaut (z.B. Ä, Ö, Ü, ä, ö, ü, ß) enthalten, dann
- löscht rsync die Datei im Ziellaufwerk
- kopiert die Datei von der Quelle auf das Ziellaufwerk
Es ist dabei unerheblich, ob die Datei geändert wurde oder nicht. rsync durchläuft ganz stupide die beiden Schritte immer und immer wieder.
Bei sehr vielen Dateien kann das sehr nervig und auch langwierig sein.
Das rsync-Verhalten kann man in einem solchen Fall sehr gut mit den beiden Optionen verfolgen.
rsync -P --delete --stats ...
Eine wWeitere Ursache kann z.B. ein fehlerhafter rsync-Befehl sein. Aber bei der Verwendung von Umlauten ist der Fehler mit hoher Wahrscheinlichkeit irgendwelchen Umlauten geschuldet.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Die Lösung
Das Problem lässt sich eigentlich sehr einfach umgehen. Es ist die Option --iconv
dem rsync-Befehl hinzuzufügen.
Abhängig von der Richtung der Dateiübertragung lautet die Option dann
von Linux zu MAC
--iconv=UTF8-MAC,UTF8
von Mac zu Linux
--iconv=UTF8,UTF8-MAC
Hierzu ein Beispiel für rsync von Mac zu Linux:
rsync -avhbP --iconv=UTF8,UTF8-MAC --stats --delete --log-file=${LOGFILE} --backup-dir=${BACKUPDIRECTORY} ${SOURCE1} ${TARGET1}
Richtige rsync-Version installiert?
Die Lösung mit --iconv
funktioniert erst ab rsync Version 3.
Apple liefert sein Betriebssystem aber aktuell noch mit der rsync-Version 2.x.x aus, das --iconv
nicht kennt. Es wird dann ein Fehler ausgegeben.
Abfrage der installierten rsync-Version
rsync --version
Glücklicherweise lässt sich rsync mithilfe von Homebrew in der aktuellsten Version installieren.
brew search rsync
brew install rsync
Nach der Installation ist der Mac neu zu starten. Die neueste Version ist dann verfügbar und kann verwendet werden.
Gib mir gerne einen Kaffee ☕ aus ❗️
Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕️ ausgeben.
Follow Me❗️
Source
- 👉 Homebrew - brew.sh
- 👉 rsync - rsync.samba.org
- Foto Raphael Schaller on Unsplash