Was vorstellbar ist, ist auch machbar.

Allgemein, Download, Mac

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 *

6 Kommentare to “rsync –delete Umlaut Problem [gelöst]”

  1. Danke, das hat schon mal weitergeholfen.
    Ein Problem bleibt bei mir noch, trotz:

    ==
    receiver:
    mazoo@mazoo:~$ rsync –version
    rsync version 3.0.7 protocol version 30
    Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
    Web site: http://rsync.samba.org/
    Capabilities:
    64-bit files, 32-bit inums, 32-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, file-flags

    sender:
    yabalka:~# rsync –version
    rsync version 3.0.7 protocol version 30
    Copyright (C) 1996-2009 by Andrew Tridgell, Wayne Davison, and others.
    Web site: http://rsync.samba.org/
    Capabilities:
    64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes
    ==

    [sender] cannot convert filename: …/h\#344berling_treffen_(32).jpg (Invalid or incomplete multibyte or wide character)

  2. Hallo Marcel,

    ich gehe davon aus, dass es für das Zeichen (#344) keine Entsprechung auf der Zielseite gibt.
    Welches Zeichen soll das eigentlich sein?

  3. Vielleicht hilft dieser Parameter:
    -8, –8-bit-output leave high-bit chars unescaped in output

  4. Moin Sascha.
    Ich habe die Macports installiert, neugestartet und folgendes zum rsync hinzugefügt. –iconv=UTF8-MAC,UTF8

    Mein Befehl sieht so aus: “rsync -avuze ssh –delete –iconv=UTF8-MAC,UTF8 –progress /Users/USERNAME/Documents/ root@192.168.x.x:/volume1/Backup/Dokumente”

    Jetzt erhalte ich aber folgende Fehlermeldung.

    –> error “rsync: –iconv=UTF8-MAC,UTF8: unknown option

    rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-42/rsync/main.c(1333) [client=2.6.9]” number 1

    Ich hoffe du kannst mir helfen, sodass auch Dateien mit

  5. Hallo Büny,

    bei Mac OS X liegt rsync standardmäßig unter /usr/bin/rsync, das ist die Version 2.6.9 (ohne iconv-Support).
    Die Version 3.0.7 oder höher liegt vmtl. wo anders, z.B. unter /usr/local/bin/rsync.

    Beim Aufrufen diese Version > 3.0.7 verwenden und schon klappt es.

    Wenn Du keine findest, habe ich auch eine zum Download auf meiner Seite hinterlegt.

    Viel Erfolg.

  6. “brew install rsync” installiert ganz einfach die jeweils aktuellste rsync-Version 😉

Schreiben Sie einen Kommentar