Às vezes, recebo o código de erro -43 quando tento acessar arquivos em uma pasta compartilhada usando o Finder no macOS via SMB. Qual é a causa disso?

Na captura de tela acima, o Finder está tentando acessar (via SMB) o diretório “1_ã” em uma pasta compartilhada e criar uma subpasta, o que provoca o erro. Isso acontece porque o caractere “ã” é codificado usando a Forma de Normalização D (NFD), que é a forma de normalização Unicode “Decomposição canônica”.
Porém, no cliente, o Finder envia a solicitação usando a Forma de Normalização C (NFC), a forma “Composição canônica”. Portanto, o servidor NAS não pode reconhecer o nome do diretório ou encontrar o diretório, então o servidor apresenta o erro.
Essa diferença também pode fazer com que alguns arquivos em pastas com nomes que contêm letras da forma NFD fiquem invisíveis ou não editáveis. Operações como renomear, criar ou editar arquivos nesse tipo de pasta podem falhar.
Esse erro ocorre quando o servidor e o cliente usam duas formas de normalização Unicode diferentes. Quando um usuário tenta acessar uma pasta compartilhada no servidor NAS via SMB, o cliente envia uma solicitação para descobrir quais arquivos estão no diretório. Ao receber a solicitação, o servidor NAS envia todos os nomes de arquivo no diretório para o cliente. O problema surge quando os nomes de arquivo usam uma forma de normalização Unicode diferente: neste caso, NFD no servidor e NFC no cliente. Isso ocorre quando o cliente escolhe uma forma diferente ao salvar arquivos no servidor NAS. Ao receber os nomes de arquivo, o cliente pede ao servidor para exibir esses arquivos ou solicita que um novo arquivo seja criado no diretório. O formato de codificação da solicitação depende das configurações no cliente. Se a solicitação do cliente tiver um formato diferente do formato usado no servidor, o servidor não poderá encontrar os arquivos ou diretórios e apresentará o erro.
No entanto, se você deseja converter nomes de arquivo da forma NFD para a forma NFC para os arquivos armazenados no NAS, pode usar uma ferramenta chamada convmv. Siga as etapas abaixo para instalar o convmv.
- Faça login no NAS e vá para o App Center.
- Instale o Perl.
- Acesse https://www.j3e.de/linux/convmv/ e baixe o convmv.
- Salve o arquivo em um diretório do NAS (por exemplo, a pasta compartilhada Public).
- Abra o Terminal e estabeleça uma conexão SSH para fazer login no NAS.
- Insira o caminho da pasta onde o convmv foi salvo.
Entrada de comando: Run: cd /share/Public - Extraia o arquivo.
Entrada de comando: Run: tar -xvf convmv-2.05.tar.gz - Insira o caminho da pasta onde os arquivos extraídos foram salvos.
Entrada de comando: Run: cd convmv-2.05 - Certifique-se de que o convmv seja executável.
Entrada de comando: Run: chmod a+x convmv - Modifique o caminho do shell do Perl para o NAS.
Entrada de comando: Run: sed -i -e'1c\\#\!\/opt\/bin\/perl' convmv - Converta os nomes de arquivo.
Entrada de comando: Run: ./convmv -r --nfc --nosmart -f UTF-8 -t UTF-8 --notest <caminho da pasta com os arquivos a serem convertidos>
Nota:
Essas instruções baseiam-se no firmware do QTS 4.3.6 com uma plataforma x86_64. Executar esse procedimento usando versões de firmware anteriores pode produzir resultados diferentes. Por exemplo, o caminho do shell do Perl pode ser diferente na etapa 10, então pode ser necessário substituí-lo pelo caminho correto.
Essas instruções não são aplicáveis a modelos com processadores ARM.
Referências:
https://en.wikipedia.org/wiki/Unicode_equivalence#Errors_due_to_normalization_differences
https://en.wikipedia.org/wiki/Unicode_equivalence#Normalization
https://www.j3e.de/linux/convmv/
https://linux.die.net/man/1/convmv
http://unicode.org/reports/tr15