Solução
mount 192.168.1.1:/SHARE share -o nolock,nfsvers=4.1
Meu Windows Server permite que todos os protocolos NFS sejam , o CentOS não selecionou 4.1. O NFS 4.1 não tem mais problemas com o umlauts como parece.
Como montar um compartilhamento nfs (sistema de arquivos formatado em NTFS) como utf8
in CentOS 6.5
?
mount -o iocharset=utf8
mount -o nfs=utf8
mount -o utf8=1
mount -o utf8
Quando eu crio um arquivo na minha unidade unix contendo umlauts (äöü) e exporto esse arquivo para o meu compartilhamento NFS, vejo caracteres quebrados no Windows (por exemplo, A¼
). o nome do arquivo - não no conteúdo.
É possível que as configurações de localidade estejam incorretas?
LC_* = "en_US.UTF-8"
Tentei também de_DE.UTF-8
Quando eu crio um arquivo no windows no compartilhamento com umlauts, ele é exibido como ?
no unix. Eu acho que há um problema com as configurações de localidade.
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=
de_DE
de_DE@euro
de_DE.iso88591
de_DE.iso885915@euro
de_DE.utf8
Tentei tudo - sem melhora.
Montar o sistema de arquivos NTFS usando o NFS versão 4.1, na resposta do @Lucas , pode parecer mágica, então aqui está por que isso resolveu esse problema específico. Se você olhar através do RFC do IETF intitulado: Protocolo do Sistema de Arquivo de Rede (NFS) Versão 4 Versão Menor 1 , especificamente seção 14.4, Recursos UTF-8 :
trecho
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.
Isso foi adicionado em 4.1 e não existia antes. Pelo menos de acordo com a minha pesquisa desta questão.
Para aqueles que estão gerenciando servidores NFS e usam o 4.0, parece que você é incentivado a usar o 4.1, supondo que queira:
NFS version 4 minor version 1 has no dependencies on NFS version 4 minor version 0, and it is considered a separate protocol. Thus, this document neither updates nor obsoletes RFC 3530. NFS minor version 1 is deemed superior to NFS minor version 0 with no loss of functionality, and its use is preferred over version 0. Both NFS minor versions 0 and 1 can be used simultaneously on the same network, between the same client and server.