So mounten Sie ein NTFS-Laufwerk als utf8 über NFS

7

Frage

Wie kann ich eine NFS-Freigabe (NTFS-formatiertes Dateisystem) wie utf8in bereitstellen CentOS 6.5?

Was ich versucht habe

mount -o iocharset=utf8  
mount -o nfs=utf8  
mount -o utf8=1
mount -o utf8

Problem:

Wenn ich eine Datei auf meinem Unix - Laufwerk mit Umlauten (äöü) und exportiert , die Datei auf meinen NFS - Freigabe Ich sehe gebrochen Zeichen unter Windows (zB ) Die gebrochenen Zeichen nur in den Dateinamen sind - nicht im Inhalt.

Ist es möglich, dass die Gebietsschemaeinstellungen falsch sind?
LC_* = "en_US.UTF-8"
Versuchte auchde_DE.UTF-8

Wenn ich eine Datei unter Windows in der Freigabe mit Umlauten erstelle, wird sie wie ?unter Unix angezeigt . Ich denke, es gibt ein Problem mit den Gebietsschemaeinstellungen.

Standard LC Einstellungen

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Gebietsschema -a | grep de_DE

de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8

Versuchte alles - keine Verbesserung.

Lucas
quelle
Welches Dateisystem ist darauf formatiert?
Cristian Măgherușan-Stanciu
Ist das ein NFS-Mount?
Anthon
NFS auf einem NTFS-formatierten Dateisystem - könnte das Problem die Gebietsschemaeinstellungen sein? Derzeit en_US.UTF-8. Aktualisierte Frage
Lucas

Antworten:

5

Lösung

mount 192.168.1.1:/SHARE share -o nolock,nfsvers=4.1

Mein Windows Server erlaubt alle NFS-Protokolle, CentOS hat 4.1 nicht ausgewählt. NFS 4.1 hat anscheinend keine Probleme mehr mit Umlauten.

Lucas
quelle
4

Das Mounten des NTFS-Dateisystems mit NFS Version 4.1 in der Antwort von @Lucas mag magisch erscheinen. Hier ist der Grund, warum dieses spezielle Problem dadurch gelöst wurde. Wenn Sie sich den IETF-RFC mit dem Titel: NFS-Protokoll (Network File System) Version 4 Minor Version 1 ansehen , insbesondere Abschnitt 14.4, UTF-8-Funktionen :

Auszug

14.4.  UTF-8 Capabilities

   const FSCHARSET_CAP4_CONTAINS_NON_UTF8  = 0x1;
   const FSCHARSET_CAP4_ALLOWS_ONLY_UTF8   = 0x2;

   typedef uint32_t        fs_charset_cap4;

   Because some operating environments and file systems do not enforce
   character set encodings, NFSv4.1 supports the fs_charset_cap
   attribute (Section 5.8.2.11) that indicates to the client a file
   system's UTF-8 capabilities.  The attribute is an integer containing
   a pair of flags.  The first flag is FSCHARSET_CAP4_CONTAINS_NON_UTF8,
   which, if set to one, tells the client that the file system contains
   non-UTF-8 characters, and the server will not convert non-UTF
   characters to UTF-8 if the client reads a symlink or directory,
   neither will operations with component names or pathnames in the
   arguments convert the strings to UTF-8.  The second flag is
   FSCHARSET_CAP4_ALLOWS_ONLY_UTF8, which, if set to one, indicates that
   the server will accept (and generate) only UTF-8 characters on the
   file system.  If FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 is set to one,
   FSCHARSET_CAP4_CONTAINS_NON_UTF8 MUST be set to zero.
   FSCHARSET_CAP4_ALLOWS_ONLY_UTF8 SHOULD always be set to one.

Dies wurde in 4.1 hinzugefügt und war zuvor nicht vorhanden. Zumindest nach meiner Recherche zu diesem Thema.

Für diejenigen, die NFS-Server verwalten und 4.0 verwenden, wird empfohlen, 4.1 zu verwenden, vorausgesetzt, Sie möchten:

NFS Version 4 Minor Version 1 hat keine Abhängigkeiten von NFS Version 4 Minor Version 0 und wird als separates Protokoll betrachtet. Daher wird in diesem Dokument RFC 3530 weder aktualisiert noch veraltet . NFS-Minor-Version 1 ist NFS-Minor-Version 0 ohne Funktionsverlust überlegen und wird gegenüber Version 0 bevorzugt. Beide NFS-Minor-Versionen 0 und 1 können gleichzeitig im selben Netzwerk zwischen demselben Client und Server verwendet werden.

slm
quelle