삼바 파일 이름의 특수 문자 된 파일을 제공하면 이름이 인식 할

Samba를 통해 파일 이름에 “() ?:”와 같은 특수 문자가 포함 된 파일을 제공하면 이름이 인식 할 수없는 형식으로 변환됩니다. 예를 들어 파일

my_file:_(important).txt

로 표시됩니다

M43J1E~0.TXT

파일의 이름을 바꾸지 않고이 동작을 피할 수있는 방법이 있습니까? 여러 UTF-8 문자가 제대로 작동하기 때문에 문자 인코딩이 책임을지지 않는다고 가정합니다.



답변

Windows는 파일 이름에 Unix가 허용하는 일부 문자를 허용하지 않습니다. Samba는 파일 이름을 “혼합하여”Windows 제한 사항을 준수하도록합니다. 파일을 확인 /etc/smb.conf하거나 /etc/samba/smb.conf어떤 설정이 있는지 확인할 수 있습니다 . 해당 설정과 기본값을 표시하려면 다음 명령을 사용하십시오.

testparm -vs | less

조금 좁히려면 :

testparm -vs|grep "case\|mangl"

자세한 내용은 이 페이지 를 참조하십시오. 또한 이 페이지의 반쯤 내려 가면 이전 링크와 동일한 정보를 참조하십시오 .


답변

OS-X 및 Windows에서 공유 폴더를 사용합니다. 일부 파일은 다음과 같은 이유로 문제가 동일합니다. Windows에서 지원하지 않는 파일 이름의 문자를 사용합니다.

참조 : http://support.microsoft.com/kb/177506

파일 또는 디렉토리에서 Windows가 지원하지 않는 문자를 나열합니다. Samba는 파일과 디렉토리를 나열 할 때 동일한 문자 목록을 사용한다고 생각합니다.

A filename cannot contain any of the following characters:
\ / : * ? " < > |

조금 더 아래로, 그들은 썼다 :

파일, 폴더 또는 바로 가기 이름에 유효한 문자에는 문자 (AZ)와 숫자 (0-9)의 조합 및 다음 특수 문자가 포함됩니다.

^   Accent circumflex (caret)
&   Ampersand
'   Apostrophe (single quotation mark)
@   At sign
{   Brace left
}   Brace right
[   Bracket opening
]   Bracket closing
,   Comma
$   Dollar sign
=   Equal sign
!   Exclamation point
-   Hyphen
#   Number sign
(   Parenthesis opening
)   Parenthesis closing
%   Percent
.   Period
+   Plus
~   Tilde
_   Underscore

그러나 개인적으로 허용되지 않는 문자 목록을 일부 고객에게 브리핑하기위한 참고 자료로 사용했습니다.)


답변

  • Macports를 통해 설치 한 Samba 3를 실행하는 64 비트 OS X 10.11 “El Capitan”이 장착 된 Apple Macbook Pro 랩탑을 소유하고 있습니다.

  • 또한 APT를 통해 설치 한 Samba 3를 실행하는 64 비트 GNU / Linux XUbuntu 16.04 “Xenial Xerus”가 장착 된 Dell Inspiron 랩탑도 소유하고 있습니다.

두 컴퓨터에는 네트워크 공유 폴더가 있으며 Samba를 사용하여 WLAN (무선 LAN)에서 통신합니다.

두 시스템 모두 브라질 포르투갈어로되어 있습니다. 따라서, 나는 다음과 같은 특수 문자를 사용 ç , á , ã , â , ô , é , ó 등등을.

Linux 랩톱을 사용하여 OS X Samba 공유에 액세스하면 모든 문자열이 올바르게 표시됩니다. maçã , ônusbênção 와 같은 단어 가 올바르게 표시됩니다. 긴 이름의 파일 및 폴더도 표시되며 해당 이름이 올바르게 표시됩니다. 따라서 OS X에서 실행되는 Samba 서버는 이미 올바르게 구성되어 있습니다.

…하지만 다른 방식으로 작동하지 않았습니다 .OS X에서 Finder 앱을 사용하여 Linux Samba 공유에 액세스하면 해당 특수 문자 중 하나 이상을 가진 모든 파일과 폴더가 표시되지 않았습니다 (그들은 보이지 않습니다. 나) 파일 및 폴더의 긴 이름이 이상한 짧은 이름으로 변환되었습니다. 따라서 Linux 시스템에서 실행중인 Samba 서버에 문제가 있습니다.

내 경우에는이 문제를 해결 한 것은 Linux 시스템 [global]smb.conf파일 내부 섹션에 다음 줄을 추가하는 것이 었습니다 .

mangled names = no
dos charset = CP850
unix charset = UTF-8

그런 다음 쉘 터미널 창을 열고 다음 명령으로 Linux Samba 서버를 다시 시작했습니다.

sudo service smbd restart

…이 다른 명령으로 대체 될 수 있습니다 (위의 명령이 Linux 배포에서 작동하지 않는 경우).

sudo systemctl restart smbd.service

Linux Samba 서버를 다시 시작한 후 OS X의 Finder 앱은 하나 이상의 특수 문자를 가진 이름으로 인해 이전에 숨겨져 있던 모든 파일과 폴더를 올바르게 표시했습니다. 맹 글링 된 ( “축소 된”) 이름도 “혼합되지 않았습니다”.

각주 :

  1. GNU / Linux 시스템에서 smb.conf파일 의 표준 위치 는/etc/samba/smb.conf
  2. Linux 시스템에 smb.conf파일이 표준 위치에 저장되어 있다고 가정하면 파일 /etc/samba/을 편집하는 방법에는 여러 가지가 smb.conf있습니다. 예를 들어, 사용자가 데스크탑 환경을 사용하지 않는 경우에는 설치할 수 있습니다 (시스템을 예에만 쉘 터미널, 아니 창문이) 나노 과 같은 명령을 실행하여, 텍스트 편집기를 sudo apt-get install nano -y하거나 sudo dnf -b -y install nano또는 뭔가 다른 (리눅스 당신을 배포판에 따라 사용하고)를 실행하십시오 sudo nano /etc/samba/smb.conf. 데스크탑 환경을 사용하는 경우 또는 사용중인 Linux 배포판에 따라 다른 명령 이나 다른 명령을 실행하여 그놈 편집 과 같은 그래픽 텍스트 편집기를 설치 한 다음 실행할 수 있습니다.sudo apt-get install gedit -ysudo dnf -b -y install geditsudo gedit /etc/samba/smb.conf
  3. Samba 3+에서는 display charset매개 변수가 더 이상 사용되지 않습니다.
  4. dos charset매개 변수는 지원하지 않습니다 UTF-8인수를. 따라서 기본 인수를 사용해야합니다 CP850.
  5. mangled names = noSamba 서버에 긴 이름의 파일 및 폴더를 줄이지 않도록 지시합니다. 따라서 Samba 클라이언트는 Samba 서버가 클라이언트에 제공 한 것을 사용자에게 복제하기 때문에 서버가 올바르게 구성되면 클라이언트는 더 이상 단축 이름을 표시하지 않습니다.

답변

삼바 문서에서 다음을 사용할 수 있습니다.

dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1