ファイル名に「()?:」などの特殊文字を含むファイルをSamba経由で提供する場合、名前は認識できない形式に変換されます。たとえば、ファイル
my_file:_(important).txt
として表示されます
M43J1E~0.TXT
(明らかにファイルの名前を変更せずに)この動作を回避する方法はありますか?いくつかのUTF-8文字が正常に機能するように見えるため、文字エンコードが原因ではないと想定しています。
ファイル名に「()?:」などの特殊文字を含むファイルを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çã、ônus、bênçãoなどの単語は正しく表示されます。長い名前のファイルとフォルダーも表示され、それらの名前は正しく表示されます。したがって、OS Xで実行されるSambaサーバーはすでに適切に構成されています...
...しかし、物事は別の方法で機能していませんでした:OS XでFinderアプリを使用してLinux Samba共有にアクセスした場合、これらの特殊文字の少なくとも1つを含むすべてのファイルとフォルダーは表示されませんでした私)、およびファイルとフォルダーの長い名前は、奇妙な短い名前に変換されました。したがって、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つ以上の特殊文字が含まれていたために非表示になっていたすべてのファイルとフォルダーを最終的に正しく表示しました。マングル(「短縮」)された名前も「アンマングル」されました。
脚注:
smb.conf
ファイルの標準の場所は/etc/samba/smb.conf
smb.conf
ファイルが標準の場所に保存されていると仮定/etc/samba/
すると、smb.conf
ファイルを編集する方法はいくつかあります。たとえば、デスクトップ環境を使用していない場合(たとえば、システムにシェルターミナルのみがあり、ウィンドウがない場合)、またはなどのコマンドを発行してNanoテキストエディターをインストールできます(Linuxディストリビューションによって異なります)を使用しています)、実行します。デスクトップ環境を使用している場合は、またはなどのコマンド(使用しているLinuxディストリビューションに応じて)を発行してGNOME Editなどのグラフィカルテキストエディターをインストールし、実行できます。sudo apt-get install nano -y
sudo dnf -b -y install nano
sudo nano /etc/samba/smb.conf
sudo apt-get install gedit -y
sudo dnf -b -y install gedit
sudo gedit /etc/samba/smb.conf
display charset
パラメーターは非推奨です。dos charset
パラメータがサポートされていないUTF-8
引数を。したがって、デフォルト引数を使用する必要がありますCP850
。mangled names = no
ファイルとフォルダーの長い名前を短縮しないようにSambaサーバーに指示します。したがって、SambaクライアントはSambaサーバーがクライアントに提供したものをユーザーにレプリケートするだけなので、サーバーが適切に構成されると、クライアントはユーザーに短縮名を表示しなくなります。sambaのドキュメントからこれらを使用できます:
dos charset = ISO8859-1
unix charset = ISO8859-1
display charset = ISO8859-1