Blog
rsync –delete Umlaut Problem [gelöst]
Wenn man mit rsync Daten zwischen einem Linux und einem Mac OS X System synchronisieren möchte, dann klappt das auf den ersten Blick, da beide UTF8 unterstützen. Auf den zweiten Blick wird man aber feststellen, dass es doch feine Unterschiede gibt. Apples Version von UTF8 heisst bei rsync dann UTF8-MAC.
1. Problem – Unnötige Löschungen
Es taucht auf, wenn man bei rsync den Parameter --delete verwendet. Dann nämlich löscht rsync alle Dateien mit Leerzeichen und Umlauten und synchronisiert sie erneut.
2. Problem – Der Zeichensatz
Manche Umlaute werden gar nicht übertragen, weil es im Zielsystem keine passende Entsprechung im Zeichensatz gibt.
Schuld ist meines Erachtens Apple, weil sie eine veraltete Version (2.6.9) von rsync ohne iconv-Support verwenden. Dazu gibt es auch ausreichend Artikel im Internet.
Lösung:
Um dies zu verhindern, gibt es hier einen schönen Artikel von André Schnitzler:
rsync zwischen MacOS (HFS+) und Linux (ext3) – und defekte Dateinamen.
Quintessenz: --iconv=UTF8-MAC,UTF8 konvertiert die Dateinamen von einem UTF8-System zum anderen.
3. Problem – rsync > 2.6.9
Dabei entsteht aber ein weiteres Problem. Woher bekommt man ein rsync mit iconv-Support und einer Version neuer als Apples 2.6.9.
Eine Recherche im Internet führte mich immer wieder auf die Variante selber compilieren, was in diesem Fall am einfachsten über MacPorts realisieren lässt.
Lösung:
Wer aber darauf keine Lust hat kann es auch als kleines Goodie hier herunterladen:
Precompiled rsync 3.0.7 für Mac OS X mit iconv-Support
MD5 (rsync) = c6ed3597a07caa48e895961a748d31bb
2016-01-08 Ergänzung:
Manchmal hilft es auch die Dateinamen des Quell oder Zielverzeichnisses zu konvertieren.
Beispielhaft sei hier die Konvertierung von Multibyte UTF-8 (MAC) nach UTF-8 (Linux) gezeigt:
convmv --notest -r --nfc -f utf8 -t utf8 *