Samba dosya adlarındaki özel karakterler


18

Samba aracılığıyla dosya adında "() ?:" gibi özel karakterler içeren dosyalar sunarken, adlar tanınmayan bir biçime dönüştürülür. Örneğin, bir dosya

my_file:_(important).txt

olarak görüntülenir

M43J1E~0.TXT

Bu davranıştan kaçınmanın bir yolu var mı (dosyaları yeniden adlandırmadan)? Birkaç UTF-8 karakteri iyi çalışıyor gibi çünkü karakter kodlama suçlamak için değil varsayıyorum.


Samba sürüm 2: Ubuntu 9.10 üzerinde 3.4.0-3ubuntu5.5
Matti

3
Smb.conf dosyasına "karışık isimler = hayır" eklemek bunu çözdü (teşekkürler, Dennis Williamson).
Matti

Yanıtlar:


10

Windows, dosya adlarında Unix'in izin verdiği bazı karakterlere izin vermez. Samba, Windows kısıtlamalarına uymaları için dosya adlarını "yönetir". Dosyayı kontrol edebilir /etc/smb.confveya /etc/samba/smb.confhangi ayarların yapıldığını görebilirsiniz. Bu ayarları ve varsayılanları göstermek için şu komutu kullanın:

testparm -vs | less

Bunu biraz daraltmak için:

testparm -vs|grep "case\|mangl"

Daha fazla bilgi için bu sayfaya bakın . Ayrıca, bu sayfanın yaklaşık yarısına bakın (önceki bağlantıyla aynı bilgiler).


9

OS-X ve Windows'ta paylaşılan bir klasör kullanıyorum. Bazı dosyalar aynı soruna sahiptir, çünkü bunlar aşağıdakilere düşer: Dosya adındaki karakterleri kullanırlar, Windows tarafından desteklenmez.

Bkz. Http://support.microsoft.com/kb/177506

Windows tarafından dosyalarda veya dizinlerde desteklenmeyen karakterleri listeler. Sanırım, Samba dosyaları ve dizinleri listelerken aynı karakter listesini kullanıyor.

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

Biraz daha aşağıda yazdılar:

Dosyaları, klasörleri veya kısayolları adlandırmak için geçerli olan karakterler, harflerin (AZ) ve sayıların (0-9) herhangi bir kombinasyonunu ve ayrıca aşağıdaki özel karakterleri içerir:

^   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

Ancak, kişisel olarak, burada bazı müşterilere bilgi vermek için izin verilmeyen karakterlerin listesini aldım;)


7
  • Macports aracılığıyla yüklediğim Samba 3'ü çalıştıran 64 bit OS X 10.11 "El Capitan" içeren bir Apple Macbook Pro dizüstü bilgisayarım var .

  • Ayrıca APT aracılığıyla yüklediğim Samba 3'ü çalıştıran 64 bit GNU / Linux XUbuntu 16.04 "Xenial Xerus" içeren bir Dell Inspiron dizüstü bilgisayarım var .

Her iki makinede de ağ paylaşımlı klasörler bulunur ve WLAN'ım (kablosuz LAN) ile iletişim kurmak için Samba kullanır.

Her iki sistemim de Brezilya Portekizcesi. Böylece ç , á , ã , â , ô , é , ó et cetera gibi özel karakterler kullanıyorum .

OS X Samba paylaşımlarıma erişmek için Linux dizüstü bilgisayarımı kullandığımda, tüm dizeler doğru şekilde gösteriliyor: maçã , ônus ve bênção gibi kelimeler doğru şekilde gösteriliyor. Uzun adlara sahip dosyalar ve klasörler de gösterilir ve adları doğru şekilde gösterilir. Böylece, OS X üzerinde çalışan Samba sunucusu zaten düzgün yapılandırılmış ...

... ancak işler başka şekilde çalışmadı: Linux Samba paylaşımlarıma erişmek için OS X'te Finder uygulamasını kullandıysam, bu özel karakterlerden en az birine sahip olan tüm dosya ve klasörler gösterilmiyordu ( me) ve dosya ve klasörlerin uzun adları garip kısa adlara dönüştürüldü. Bu nedenle, Linux makinemde çalışan Samba sunucusunda bir sorun vardı.

=> Benim durumumda, bu sorunu çözen şey Linux makinemdeki dosyanın [global]içindeki bölüme aşağıdaki satırları eklemektir smb.conf:

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

Bundan sonra, bir kabuk terminal penceresi açtım ve Linux Samba sunucusunu şu komutla yeniden başlattım:

sudo service smbd restart

... bu komutla değiştirilebilir (yukarıdaki komut Linux dağıtımınızda çalışmazsa):

sudo systemctl restart smbd.service

Linux Samba sunucusunu yeniden başlattıktan sonra, OS X'teki Finder uygulaması nihayet bir veya daha fazla özel karaktere sahip oldukları için daha önce gizlenmiş olan tüm dosya ve klasörleri doğru bir şekilde gösterdi. Karışık ("kısaltılmış") isimler de "yönetilmemiş" idi.

Dipnotlar :

  1. GNU / Linux sistemlerinde, smb.confdosyanın standart konumu/etc/samba/smb.conf
  2. Linux sisteminizde smb.confdosyanın standart konumda saklandığı varsayılarak /etc/samba/: smb.confdosyayı düzenlemenin birkaç farklı yolu vardır . Örneğin, bir Masaüstü Ortamı kullanmıyorsanız (örn. Sisteminizde yalnızca bir kabuk terminali varsa, pencereleri yoktur) Nano metin düzenleyicisini, sudo apt-get install nano -yveya benzeri bir komut sudo dnf -b -y install nanovererek (hangi Linux dağıtımına bağlı olarak) kullanıyor) ve ardından çalıştırın sudo nano /etc/samba/smb.conf. Bir Masaüstü Ortamı kullanıyorsanız, GNOME Düzenleme gibi bir grafik metin düzenleyicisi yükleyebilir sudo apt-get install gedit -yveya böyle bir komut verebilirsiniz sudo dnf -b -y install gedit(hangi Linux dağıtımını kullandığınıza bağlı olarak) ve sonra çalıştırabilirsiniz sudo gedit /etc/samba/smb.conf.
  3. Samba 3 + 'da display charsetparametre kullanımdan kaldırılmıştır.
  4. dos charsetParametre desteklemez UTF-8argüman. Bu nedenle, varsayılan argümanı kullanmalıdır CP850.
  5. mangled names = noSamba sunucusuna dosya ve klasörlerin uzun adlarını kısaltmamasını söyler. Bu nedenle, Samba istemcisi kullanıcıya Samba sunucusunun istemciye sağladığını çoğalttığından, sunucu düzgün yapılandırıldıktan sonra istemci artık kullanıcıya kısaltılmış bir ad göstermeyecektir.

4

samba dokümantasyonundan şunları kullanabilirsiniz:

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

4
Bu ve [global] içine karışık adlar = hayır ekleyerek nas4free üzerinde sabit
Christopher Chase
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.