Ich habe einen Heimdateiserver mit FreeNAS 8. Vor einigen Tagen habe ich mit rsync meine gesamte iTunes-Mediathek von einem Mac hochgeladen, damit ich meine Mediathek über das Netzwerk laden kann, anstatt von einem langsamen USB-Laufwerk. Das hat größtenteils funktioniert und iTunes läuft jetzt viel besser, aber ich habe Probleme beim Zugriff auf Titel, die keine ASCII-Zeichen enthalten (ich habe das Problem zum ersten Mal beim Laden von Queensrèche-Titeln bemerkt). Die Dateien wurden im Finder angezeigt, aber jeder Versuch, auf sie zuzugreifen, ließ sie verschwinden, bis ich mich wieder mit dem Server verbunden habe.
Nach einigen Recherchen habe ich herausgefunden, dass OSX eine andere UTF-Zeichenreihenfolge als Linux verwendet. OSX-Dateisysteme verwenden Unicode Normalization Form D (NFD), während Linux Form C (NFC) verwendet. Rsync konvertiert diese Formulare nicht, wenn es die Kopie von meinem Mac auf den Server ausführt. Wenn iTunes nun versucht, über das Netzwerk auf eine Datei mit einem Sonderzeichen zuzugreifen, haben die Dateien auf dem Server die falsche Codierung und es werden keine afpd-Berichte angezeigt. ' existiert nicht.
Wie kann dieses Problem am besten behoben werden? Kann rsync die Unicode-Konvertierung ausführen, während die Basisbibliothek auf den Server hochgeladen wird? Kann ich afpd so konfigurieren, dass Dateinamen im NFD-Format gesendet / empfangen werden? Gibt es eine einfache Lösung, um die Dateinamen auf dem Server zu ändern? Ich habe einige Dinge über ein Programm namens convmv gefunden, aber ich weiß nicht, ob ich das auf FreeNAS ausführen kann.
Antworten:
Etwas, das funktionieren sollte , ist das Synchronisieren zwischen dem Quellverzeichnis und dem bereitgestellten Remote-Dateisystem (SMB, NFS, AFP), das von rsync nur als lokales Dateisystem behandelt wird.
Ich weiß jedoch nicht, wie gut dies in der Praxis funktioniert, und Sie müssen verschiedene Probleme umgehen, zum Beispiel wird der Delta-Transfer-Algorithmus nicht standardmäßig verwendet (da Quelle und Ziel „lokal“ sind) (möglicherweise -). no-whole-file wird funktionieren?), müssen Sie zB überprüfen, ob SMB die Änderungszeiten effektiv einhält, usw.
quelle
Sie können die
--iconv
Option von rsync verwenden , um zwischen UTF-8 NFC und NFD zu konvertieren, zumindest wenn Sie einen Mac verwenden. Es gibt einen speziellenutf-8-mac
Zeichensatz, der für UTF-8 NFD steht. Um also Dateien von Ihrem Mac auf Ihren NAS zu kopieren, müssen Sie Folgendes ausführen: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.
quelle
UTF8-MAC
für NFD steht; Wenn es mit sichiconv
selbst verwendet wird, bietet es einen generischen Mechanismus für das Hin- und Herwechseln zwischen NFC und NFD.brew tap homebrew/dupes && brew install homebrew/dupes/rsync && rehash
rsync: --iconv: unknown option
Derzeit benutze ich
rsync --iconv
wie folgt:Kopieren von Dateien vom Linux-Server auf einen OS X-Computer
Sie sollten diesen Befehl auf einem OS X-Computer ausführen :
Kopieren von Dateien von einem OS X-Computer auf einen Linux-Server
Sie sollten diesen Befehl auf einem OS X-Computer ausführen :
quelle
Verwenden Sie nicht rsync, um die Dateien auf Ihren NAS zu kopieren. Wenn Sie die Dateien mit rsync kopieren, werden die Dateinamen im UTF-NFD-Format (dh im OSX-Format) auf Ihrem NAS gespeichert, aber der auf Ihrem NAS ausgeführte Samba-Server versteht nur Dateinamen im UTF-NFC-Format. Verwenden Sie die CIFS / SMB (Samba) -Schnittstelle, um die Dateien zu kopieren, und alles wird gut.
quelle
Aus meiner Erfahrung empfehle ich die Verwendung von SMB anstelle von ssh. Iconv behebt das Kodierungsproblem, aber es gibt immer noch ein Problem mit zulässigen Zeichen auf verschiedenen Systemen:
Ursprünglicher Dateiname auf dem Mac:
Nach dem Kopieren per rsync über SMB:
Nach dem Kopieren per rsync über ssh (mit Ameise ohne Iconv Flag):
quelle