Rsync mit Linux-Server: Problem mit Sonderzeichen

Ich habe ein Problem mit der Verwendung von rsync zum Sichern von Dateien auf meinem Remote-Linux-Rechner auf meinem Mac. Beim ersten Mal ist alles gut, aber anscheinend gibt es ein Problem mit Sonderzeichen zwischen Mac und Linux-Maschine, da jedes Mal, wenn ich danach die rsync-Operation ausführe, die Dateien mit Sonderzeichen zuerst gelöscht und dann neu synchronisiert werden. Es scheint ein Problem mit unterschiedlichen Zeichensätzen zu geben.

Die bevorzugte Lösung scheint die Verwendung der --iconvOption zu sein:

Sie können die Option --iconv von rsync verwenden, um zwischen UTF-8 NFC und NFD zu konvertieren, zumindest wenn Sie einen Mac verwenden. Es gibt einen speziellen utf-8-mac-Zeichensatz, der für UTF-8 NFD steht. Um also Dateien von Ihrem Mac auf Ihr NAS zu kopieren, müssen Sie Folgendes ausführen:

rsync -a --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/

Dadurch werden alle lokalen Dateinamen auf dem Remote-Server von UTF-8 NFD in UTF-8 NFC konvertiert. Der Inhalt der Dateien wird nicht beeinflusst.

Das klingt alles und gut, aber mein Mac scheint diese Option nicht zu erkennen, da ich bekomme:

>     MyMachine:~ Macuser$ /usr/bin/rsync -av --delete --iconv=utf-8,utf-8-mac user@linuxmachine:/home/linuxuser/Test/ /Users/Macuser/Test/
>     rsync: --iconv=utf-8,utf-8-mac: unknown option
>     rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-42/rsync/main.c(1333) [client=2.6.9]

Irgendwelche Vorschläge, was zu tun ist?

BEARBEITEN: Die rsync-Version auf meinem Mac ist 2.6.9.

Macuser$ rsync --version
rsync  version 2.6.9  protocol version 29

Wenn diese Version die Option nicht unterstützt --iconv, wie aktualisiere ich auf sichere Weise?

BEARBEITEN: Ich habe endlich herausgefunden, dass ich neben der Aktualisierung von rsync auch die Reihenfolge ändern musste, in der ich die Zeichensätze angegeben habe, also habe ich unten eine Antwort hinzugefügt.

Welche Version von rsync hast du
2.6.9. - Siehe Bearbeiten.

Antworten (2)

Ich habe schließlich herausgefunden, dass ich neben der Aktualisierung von rsync auch die Reihenfolge ändern musste, in der ich die Zeichensätze angegeben habe: Ich dachte, Sie sollten den Zeichensatz in der Reihenfolge der Transformation angeben; aber das scheint nicht die richtige Syntax zu sein. Vielmehr sollte man immer--iconv=utf-8-mac,utf-8 beim Initialisieren von rsync vom Mac und immer verwenden --iconv=utf-8,utf-8-macbeim Initialisieren von rsync vom Linux-Rechner aus, egal ob ich Dateien vom Mac- oder Linux-Rechner synchronisieren möchte .

Dann funktioniert die Lösung von @ Mark wie von Zauberhand!

Das Argument --iconv wurde in rsync Version 3.0.0 hinzugefügt ( Versionshinweise ) OSX bietet nur Version 2.6.9 (siehe Apples Open-Source-Seite )

Daher benötigen Sie eine neuere Version von rsync. Das neueste ist 3.1.2 (2.6.9 wurde 2006 veröffentlicht)

Ich würde auch eine neuere Version von rsync erhalten, da das Kopieren von xattr auch nach 2.6.9 eingeführt wurde

Ich denke, der einfachste Weg, ein neues rsync zu erhalten, besteht darin, einen Paketmanager wie Macports oder Homebrew zu installieren und dann rsync zu installieren, oder Sie können von der Quelle installieren

Danke! Ich habe jetzt 3.1.1 auf meinem Mac, aber ich bekomme immer noch eine Fehlermeldung, fürchte ich: iconv_open("UTF-8", "utf-8-mac") fehlgeschlagener rsync-Fehler: angeforderte Aktion nicht unterstützt (Code 4) at rsync.c(118) [sender=3.0.9] rsync: Verbindung unerwartet geschlossen (bisher 0 Bytes empfangen) [Empfänger] rsync-Fehler: Fehler im Datenstrom des rsync-Protokolls (Code 12) bei io.c(226) [Empfänger =3.1.1] -- es gibt natürlich unterschiedliche Versionen auf dem entfernten und dem lokalen Rechner, aber da sie beide über 3.0.0 sind, warum spielt das eine Rolle?
Entschuldigung, ich weiß nicht mehr. Ich würde eine neue Frage erstellen - wahrscheinlich zu SuperUser, da ich ein nicht OSX-spezifisches Problem vermute
Wird gemacht - vielen Dank, dass Sie mich auf jeden Fall weit in die richtige Richtung gebracht haben!
Es stellte sich heraus, dass abgesehen davon, dass Sie die falsche Version von rsync auf dem Mac hatten (was Ihr rsync-Update behoben hat), das Problem darin bestand, dass ich dachte, Sie sollten den Zeichensatz in der Reihenfolge der Transformation angeben. aber das scheint nicht die richtige Syntax zu sein. Vielmehr sollte man immer--iconv=utf-8-mac,utf-8 beim Initialisieren von rsync vom Mac und immer verwenden --iconv=utf-8,utf-8-macbeim Initialisieren von rsync vom Linux-Rechner aus, egal ob ich Dateien vom Mac- oder Linux-Rechner synchronisieren möchte . In dieser Reihenfolge verwendet, war alles in Ordnung. Dann funktioniert es wie von Zauberhand!