อักขระพิเศษในชื่อไฟล์แซมบ้า


18

เมื่อแสดงไฟล์ที่มีอักขระพิเศษเช่น "() ?:" ในชื่อไฟล์ผ่าน Samba ชื่อนั้นจะถูกแปลงเป็นรูปแบบที่ไม่สามารถจดจำได้ ตัวอย่างเช่นไฟล์

my_file:_(important).txt

จะปรากฏเป็น

M43J1E~0.TXT

มีวิธีการหลีกเลี่ยงพฤติกรรมนี้ (โดยไม่ต้องเปลี่ยนชื่อไฟล์ชัด ๆ )? ฉันสมมติว่าการเข้ารหัสตัวอักษรไม่ควรตำหนิเพราะตัวอักษร UTF-8 หลายตัวดูเหมือนจะใช้ได้ดี


Samba เวอร์ชั่น 2: 3.4.0-3ubuntu5.5 บน Ubuntu 9.10
Matti

3
การเพิ่ม "mangled names = no" เพื่อ smb.conf แก้ไขสิ่งนี้ (ขอบคุณ Dennis Williamson)
Matti

คำตอบ:


10

Windows ไม่อนุญาตให้ใช้อักขระบางตัวในชื่อไฟล์ที่ Unix อนุญาต แซมบ้า "mangles" ชื่อไฟล์เพื่อให้สอดคล้องกับข้อ จำกัด ของ Windows คุณสามารถตรวจสอบไฟล์/etc/smb.confหรือ/etc/samba/smb.confดูการตั้งค่าที่มีอยู่ หากต้องการแสดงการตั้งค่าเหล่านั้นรวมถึงค่าเริ่มต้นให้ใช้คำสั่งนี้:

testparm -vs | less

หากต้องการลดขนาดให้แคบลง:

testparm -vs|grep "case\|mangl"

ดูหน้านี้สำหรับข้อมูลเพิ่มเติม นอกจากนี้โปรดดูประมาณครึ่งทางจากหน้านี้ (ข้อมูลเดียวกับลิงค์ก่อนหน้า)


9

ฉันใช้โฟลเดอร์แชร์ใน OS-X และ Windows บางไฟล์มีปัญหาเดียวกันเนื่องจากไฟล์เหล่านี้มีลักษณะดังต่อไปนี้: ใช้อักขระในชื่อไฟล์ที่ Windows ไม่รองรับ

ดู: http://support.microsoft.com/kb/177506

มันแสดงรายการอักขระที่ Windows ไม่รองรับในไฟล์หรือไดเรกทอรี ฉันเดาว่าแซมบ้าจะใช้รายชื่อตัวละครเดียวกันเมื่อแสดงไฟล์และไดเรกทอรี

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

แต่โดยส่วนตัวแล้วฉันใช้รายชื่อตัวละครที่ไม่ได้รับอนุญาตเป็นข้อมูลอ้างอิงสำหรับการบรรยายสรุปลูกค้าบางรายที่นี่;)


7
  • ฉันเองแล็ปท็อปแอปเปิ้ล Macbook Pro กับ 64 บิต OS X 10.11 "El Capitan" แซมบ้าทำงาน 3 ที่ผมติดตั้งผ่านMacports

  • ฉันยังเป็นเจ้าของแล็ปท็อป Dell Inspiron พร้อม 64-bit GNU / Linux XUbuntu 16.04 "Xenial Xerus" ที่ใช้งาน Samba 3 ที่ฉันติดตั้งผ่าน APT

ทั้งสองเครื่องมีโฟลเดอร์แชร์เครือข่ายและใช้แซมบ้าเพื่อสื่อสารกับ WLAN (LAN แบบไร้สาย) ของฉัน

ทั้งระบบของฉันเป็นภาษาโปรตุเกสแบบบราซิล ดังนั้นฉันใช้ตัวอักษรพิเศษเช่นç , á , ã , â , ô , é , ó et cetera

เมื่อฉันใช้แล็ปท็อป Linux เพื่อเข้าถึงการแชร์ OS X Samba ของฉันสตริงทั้งหมดจะแสดงอย่างถูกต้อง: คำเช่นmaçã , ônusและbênçãoแสดงอย่างถูกต้อง ไฟล์และโฟลเดอร์ที่มีชื่อยาวจะปรากฏขึ้นและแสดงชื่ออย่างถูกต้อง ดังนั้นเซิร์ฟเวอร์ Samba ที่ทำงานบน OS X ได้รับการกำหนดค่าอย่างเหมาะสมแล้ว ...

... แต่สิ่งต่าง ๆ ไม่ทำงานในทางตรงกันข้าม: ถ้าฉันใช้แอพ Finder บน OS X เพื่อเข้าถึงการแบ่งปัน Linux Samba ของฉันไฟล์และโฟลเดอร์ทั้งหมดที่มีอักขระพิเศษอย่างน้อยหนึ่งตัวไม่ปรากฏขึ้น ฉัน) และชื่อยาวของไฟล์และโฟลเดอร์ถูกแปลงเป็นชื่อย่อแปลก ๆ ดังนั้นมีบางอย่างผิดปกติกับเซิร์ฟเวอร์ Samba ที่ทำงานบนเครื่อง Linux ของฉัน

=> ในกรณีของฉันสิ่งที่แก้ไขปัญหานี้คือการเพิ่มบรรทัดต่อไปนี้ลงใน[global]ส่วนภายในsmb.confไฟล์บนเครื่อง Linux ของฉัน:

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

หลังจากนั้นฉันเปิดหน้าต่างเทอร์มินัลเชลล์และรีสตาร์ทเซิร์ฟเวอร์ Linux Samba ด้วยคำสั่งนี้:

sudo service smbd restart

... ซึ่งสามารถถูกแทนที่ด้วยคำสั่งอื่นนี้ (ในกรณีที่คำสั่งข้างต้นไม่สามารถใช้กับการกระจาย Linux ของคุณ):

sudo systemctl restart smbd.service

หลังจากฉันรีสตาร์ทเซิร์ฟเวอร์ Linux Samba แล้ว Finder Finder บน OS X ในที่สุดก็แสดงไฟล์และโฟลเดอร์ทั้งหมดที่ถูกซ่อนไว้ก่อนหน้านี้อย่างถูกต้องเพราะชื่อของพวกเขามีอักขระพิเศษอย่างน้อยหนึ่งตัว ชื่อ mangled ("shortened") ก็เป็น "unmangled" เช่นกัน

เชิงอรรถ :

  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หรือสิ่งอื่น (ขึ้นอยู่กับ Linux distro คุณ กำลังใช้) sudo nano /etc/samba/smb.confและจากนั้นก็วิ่ง ในกรณีที่คุณกำลังใช้สภาพแวดล้อมสำหรับเดสก์ทอปคุณสามารถติดตั้งโปรแกรมแก้ไขข้อความกราฟิกเช่นGNOME แก้ไขโดยการออกคำสั่งเช่นsudo apt-get install gedit -yหรือsudo dnf -b -y install geditหรือสิ่งอื่น (ขึ้นอยู่กับ Linux distro ที่คุณใช้) sudo gedit /etc/samba/smb.confและเรียกใช้แล้ว
  3. ใน Samba 3+ display charsetพารามิเตอร์เลิกใช้แล้ว
  4. dos charsetพารามิเตอร์ไม่สนับสนุนUTF-8ข้อโต้แย้ง CP850ดังนั้นจึงต้องใช้อาร์กิวเมนต์เริ่มต้น
  5. mangled names = noสั่งให้เซิร์ฟเวอร์แซมบ้าไม่ย่อชื่อไฟล์และโฟลเดอร์ให้สั้นลง ดังนั้นเนื่องจากไคลเอนต์ Samba เพิ่งทำซ้ำกับผู้ใช้สิ่งที่เซิร์ฟเวอร์ Samba ให้กับลูกค้าเมื่อเซิร์ฟเวอร์ได้รับการกำหนดค่าอย่างถูกต้องไคลเอนต์จะไม่แสดงชื่อที่สั้นลงของผู้ใช้อีกต่อไป

4

จากเอกสารแซมบ้าคุณสามารถใช้สิ่งเหล่านี้:

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

4
สิ่งนี้และการเพิ่มชื่อ mangled = ไม่ไปที่ [global] แก้ไข my on nas4free
Christopher Chase
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.