Ich möchte mit rsync meinen Ubuntu-Server mit einer Festplatte sichern, die sich auf einem Mac befindet. Es funktioniert jedoch nicht ordnungsgemäß, da jedes Mal, wenn ich den rsync-Vorgang nach dem ersten Mal erneut ausführe, die Dateien mit Sonderzeichen zuerst gelöscht und dann erneut synchronisiert werden. Es scheint, als gäbe es ein Problem mit verschiedenen Zeichensätzen.
Die bevorzugte Lösung scheint die Verwendung der --iconv
Option 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 Zeichensatz utf-8-mac, der für UTF-8 NFD steht. Um also Dateien von Ihrem Mac auf Ihren 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 von UTF-8 NFD in UTF-8 NFC auf dem Remote-Server konvertiert. Der Inhalt der Dateien wird nicht beeinflusst.
Dank @Jan habe ich meine rsync-Version von 2.6.9 auf meinem Mac aktualisiert. zu 3.1.1. Trotzdem bin ich noch nicht ganz da, da ich jetzt einen weiteren Fehler erhalte:
iconv_open("UTF-8", "utf-8-mac") failed
rsync error: requested action not supported (code 4) at rsync.c(118) [sender=3.0.9]
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1]
Ich bin ratlos zu verstehen, warum "angeforderte Aktion nicht unterstützt", da es scheint, dass die rsync-Version auf meinem Ubuntu (12.04) nach 3.xx ist und daher die --iconv
Option unterstützen sollte.
EDIT: Lassen Sie mich hinzufügen, dass, wenn ich (auf dem Mac, nota bene) eine rsync vom Mac nach Linux initiiere, alles wunderbar funktioniert:
rsync -av --delete --iconv=utf-8-mac,utf-8 localdir/ mynas:remotedir/
Aber es funktioniert nicht, vom Mac aus in die andere Richtung zu gehen. Seltsamerweise rendert das Testen, um den Rsync vom Linux-Rechner aus zu starten, diese seltsame Meldung:
rsync: on remote machine: --iconv=UTF-8-MAC: unknown option
rsync error: syntax or usage error (code 1) at /SourceCache/rsync/rsync-45/rsync/main.c(1333) [server=2.6.9]
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]
einschließlich der sehr seltsamen Behauptung [server=2.6.9]
, obwohl ich auf dem Mac auf 3.1.1 aktualisiert habe. Aus einigen Gründen sieht es so aus, als würde mein Linux-Rechner nur die ursprüngliche rsync-Version auf dem Mac sehen.
Irgendwelche Vorschläge, wie man das löst?
Ich kann bestätigen, dass dies funktioniert, ich hatte das gleiche Problem. In meinem Fall war eine Datei mit einem Akzentzeichen auf dem Ziel nicht lesbar. Ich habe es nur durch Ausführen eines Ordnervergleichs auf meinem Mac mithilfe der Anwendung "Ordner vergleichen" entdeckt: https://itunes.apple.com/gb/app/compare-folders/id816042486?mt=12
Die obigen Befehle --iconv = utf-8-mac, utf-8 und BOOM wurden hinzugefügt! rsync hat jede mit Akzenten versehene Datei durch eine neue ersetzt.
Um einige Informationen hinzuzufügen, da die oben genannten Links anscheinend nicht mehr funktionieren, führen Sie ein Upgrade von rsync auf 3.1.2 durch, installieren Sie Macports und führen Sie Folgendes aus: sudo port install rsync
Der Grund dafür, dass der Remoteserver die Version 2.6.9 zurückgibt, ist, dass die alte Version noch vorhanden ist und der Remoteserver diese Version anstelle der neuen Version anzeigt.
Version 2.6.9 befindet sich in / usr / bin
quelle