SMB를 통해 macOS에서 Finder를 사용할 때 공유 폴더에 있는 파일에 액세스하려고 할 때 때로 오류 코드 -43이 발생합니다. 원인이 무엇입니까?

위 스크린샷에서, Finder가 공유 폴더의 디렉토리 “1_ã”에 (SMB를 통해) 액세스를 시도하고, 하위 폴더를 생성하려고 하지만 오류가 발생합니다. 이것은 문자 “ã”가 “Canonical Decomposition” 유니코드 정상화 양식인 NFD(Normalization Form D)를 사용하여 인코딩되기 때문에 발생합니다.
그러나 클라이언트 쪽에서 Finder는 NFC(Normalization Form C), 즉 “Canonical Composition” 양식을 사용하여 요청을 보냅니다. 따라서, NAS 서버가 디렉토리 이름을 인식하지 못하거나 디렉토리를 찾지 못하여 오류를 보고합니다.
또한 이 차이점으로 인해 NFD 양식의 문자가 포함된 이름을 가진 폴더에 있는 일부 파일이 보이지 않거나 편집 불가능하게 될 수 있습니다. 이런 종류의 폴더에 있는 파일의 이름 바꾸기, 생성 또는 편집 같은 작업은 실패할 수 있습니다.
이 오류는 두 가지 서로 다른 유니코드 정규화 양식을 사용하는 서버와 클라이언트로 인한 결과입니다. 사용자가 SMB를 통해 NAS 서버에 있는 공유 폴더에 액세스하려고 하면, 클라이언트는 요청을 보내 디렉토리에 어떤 파일이 있는지 알아냅니다. 요청을 받으면 NAS 서버는 디렉토리에 있는 모든 파일 이름을 클라이언트에게 보냅니다. 이 문제는 파일 이름에서 서로 다른 유니코드 정규화 양식을 사용할 때 발생합니다 – 이 경우, 서버 측에서는 NFD를, 클라이언트 측에서는 NFC를 사용합니다. 클라이언트가 파일을 NAS 서버에 저장할 때 다른 양식을 선택하는 경우 이러한 상황이 발생합니다. 클라이언트가 파일 이름을 수신하면, 클라이언트는 서버에게 이러한 파일을 표시하도록 요청하거나 디렉토리에 새 파일을 생성하도록 요청합니다. 요청의 인코딩 형식은 클라이언트 쪽의 설정에 따라 다릅니다. 클라이언트의 요청이 서버에서 사용된 형식과 다른 경우, 서버는 해당 파일 또는 디렉토리를 찾을 수 없어 오류를 보고합니다.
그러나, NAS에 저장되는 파일에 대해 NFD 양식 파일 이름을 NFC 양식으로 변환하려는 경우, convmv라는 도구를 사용하면 됩니다. 아래 단계를 따라 convmv를 설치합니다.
- NAS에 로그인하고 App Center로 이동합니다.
- Perl을 설치합니다.

- https://www.j3e.de/linux/convmv/로 가서 convmv를 다운로드합니다.
- 파일을 NAS의 디렉토리에 저장합니다. (예: 공유 폴더, Public)
- 터미널을 열고 SSH 연결을 설정하여 NAS에 로그인합니다.
- convmv가 저장된 폴더 경로로 들어갑니다.
명령 입력: Run: cd /share/Public - 파일을 추출합니다.
명령 입력: Run: tar -xvf convmv-2.05.tar.gz - 추출된 파일이 저장된 폴더 경로로 들어갑니다.
명령 입력: Run: cd convmv-2.05 - convmv가 실행 파일인지 확인하십시오.
명령 입력: Run: chmod a+x convmv - NAS의 Perl 셀 경로를 수정합니다.
명령 입력: Run: sed -i -e'1c\\#\!\/opt\/bin\/perl' convmv - 파일 이름을 변환합니다.
명령 입력: Run: ./convmv -r --nfc --nosmart -f UTF-8 -t UTF-8 --notest <변환할 파일이 포함된 폴더 경로>
참고:
이러한 지침은 x86_64 플랫폼의 QTS 4.3.6 펌웨어를 기반으로 합니다. 이전 펌웨어 버전을 사용하여 이 단계를 수행하면 결과가 달라질 수 있습니다. 예를 들어, 10단계의 Perl 셀 경로가 다를 수 있으므로, 올바른 경로로 교체해야 합니다.
이러한 지침은 ARM 기반 모델에는 적용되지 않습니다.
참조:
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