리눅스 서버에서 SMB 서버로 공유한 파일이 보이지 않을 때
페이지 정보
본문
최근에 집에 리눅스 서버를 구축했습니다. 당연히 맥에서 접근할 때는 AFP나 SMB로 접근을 하고 있고요.
문제는 일본어, 한국어 파일명을 쓰는 경우 스무 개 중 하나의 비율로 잘 보이지 않는 것은 물론, 파일을 옮기거가 복사할 때마다 알 수 없는 에러가 뜬다는 점이었습니다. 특히 제가 좋아하는 일본 야큐(野球)... 동영상 중에서 그런 것들이 많았죠. 그런데 윈도우에서 SMB 공유를 하면 문제없이 잘 보이는 것이었습니다.
그래서 문제 해결을 위해 이것저것 찾아봤는데, 문제의 원인은 어이없게도 NFD/NFC 정규화 때문이었습니다. 예, 맥에서 만든 파일을 윈도우로 가져가면 한글이 죄다 풀려보이는 문제로 많은 사람들을 괴롭히고 짜증나게 만드는 문제 말입니다.
마찬가지로 리눅스에서 NFD 인코딩에 따라 만들어진 파일명 중, 일본어 측점이나 탁점이 포함된 문자가 있는 경우엔 맥에서 제대로 인식을 하지 못하는 겁니다.
제가 참고한 문서(https://qiita.com/snowxcrash/items/548dc83aa392fc7e3e09)에서는 파이썬으로 NFD->NFC 스크립트를 만드는 방법을 설명하고 있습니다. 이걸 조금 개량하면 다음과 같습니다.
import os
import pathlib
import unicodedata
filePath = input('경로를 입력하세요: ')
files = pathlib.Path(filePath).glob('**/*')
for file in files:
filename = str(file)
nfc_filename = unicodedata.normalize('NFC', filename)
if filename != nfc_filename:
# print('Renaming ', filename.encode('utf-8'), 'to ', nfc_filename.enco>
os.rename(filename, nfc_filename)
이렇게 해서 rename_to_nfc.py 같은 이름으로 저장한 다음, 리눅스 터미널에서
python3 rename_to_nfc.py
로 실행하고, "경로를 입력하세요:"라는 문구가 나오면 NFD->NFC로 변환할 파일명이 있는 폴더나 볼륨 경로를 입력하면 됩니다.
덕분에 전 이제 야큐 동영상을 즐겁게 볼 수 있게 됐습니다 (읏흥). 리눅스 서버에서 야큐 동영상을 보시는 분들은 참고하세요.
PS: 어찌어찌하다 실수로 처음 만든 계정을 탈퇴하고 다시 계정을 만들었더니, djhan 닉을 쓸 수가 없군요. (빌어처먹을) 그누보드 문제 같은데 이거 해결이 안 되는 걸까요?
molla님의 댓글
그리고, smb 로 파일 옮기면 자동으로 파일 이름을 NFC 로 만들어주지 않던가요? 왜 NFD로 남아있죠?