rsync mit OS X und Linux

Mein kompletter Arbeitsplatz läuft seit einigen Jahren unter OS X. Apple brüstet sich seit langer Zeit damit, daß OS X „Unix basiert“ sei. Leider ist bei mir noch nicht viel davon angekommen: Als deutscher Nutzer fühlt man sich bereits ziemlich verlassen, wenn man versucht mit dem Terminal und den normalen Kommandozeilen-Tools Dateien zu behandeln, die deutsche Umlaute enthalten.

Meine Erwartung wäre eigentlich, daß Verzeichnisinhalte auf der Kommandozeile auf die gleiche Art dargestellt werden, wie man sie im Finder sieht (also mit Sonderzeichen im Dateinamen, usw.). Leider ist dem nicht so. Lustig wird es, wenn man versucht Dateien zwischen mehreren Systemen zu transferieren. Dabei droht man dann mit OS X endgültig in den tiefen Abgründen der Zeichenkodierung zu versinken. Anfangs denkt man noch, daß das eigentlich kein Problem sein sollte, da Apple ja UTF-8 für die Zeichenkodierung verwendet und der Trend zur UTF-8 Unterstützung auch vor Linux nicht halt gemacht hat. Leider verwendet OS X Decomposed UTF-8 um Dateinamen darzustellen. Genaugenommen als einziges System überhaupt.

Backups würde ich gerne mit rsync auf einen Linux Rechner machen, der aus historischen Gründen seine Dateinamen nach ISO-8859-15 kodiert. Dateien, deren Name keine Umlaute enthalten, kann man auf diese Art und Weise relativ problemlos kopieren. Dateienamen mit Umlauten werden einfach ignoriert. Leider untersützt rsync keine Anpassung der Dateinamen and das verwendete Encoding — auch wenn das Problem immer mal wieder auf der Mailingliste auftaucht. In der Zwischenzeit gibt es immerhin einen inoffiziellen Patch, der allerdings auf die aktuelle Version (2.6.8) nicht anwendbar ist. Mit etwas Geduld kann man Änderungen jedoch so anpassen, daß man ein funktionierendes rsync bekommt: rsync-iconv (in Kürze als Download verfügbar).

Dateien unter OS X enthalten allerdings Zusatzinformationen, wie Resource Forks und erweiterte Attribute. Wenn möglich, sollen diese bei der Synchronisation erhalten bleiben. Apple hat hierfür einen Mechanismus vorgesehen, der aus der Datei „Test.txt“ zwei Dateien generiert. Die eine („Test.txt“) enthält den eigentlichen, für den Benutzer sichtbaren, Inhalt. Die andere („._Test.txt“) enthält alle weiteren Informationen. Der aufmerksame Leser wird diesen Dateien bereits begegnet sein: der selbe Mechanismus wird angewandt, wenn mit dem Finder Dateien auf ein FAT Laufwerk oder eine Windows Dateifreigabe kopiert werden.

Apple hat dafür eine bisher unveröffentlichte Veränderung an rsync vorgenommen (Option -E bzw. --extended-attributes). Leider leidet diese unter einigen Problemen. Momentan arbeite ich daran, den auf dieser Seite verfügbaren Patch für Version 2.6.8 zu portieren. Leider scheitert make test, so daß ich erst mit dem Autor abklären muß, inwieweit sein Patch überhaupt funktioniert.

3 Gedanken zu „rsync mit OS X und Linux“

  1. Hi, endlich mal jemand, der sich damit befasst hat. Ich leide am gleichen Problem, über Tipps oder eine gepatchte rsync Version wäre ich sehr dankbar.

  2. Seit rsync 3.0 kann man mit der –iconv Option die Konvertierung zwischen local und remote charset angeben, zum Beispiel in oben genannten Beispiel –iconv=iso88591,utf8

    Vorher sollte man auf beiden Seiten mit rsync –version und iconv –list die Version und die verfügbaren Zeichensätze überprüfen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.