İnsan dostu Samba ismi


12

Bilgisayarlarımızın çoğu Ubuntu'yu çalıştırıyor, ancak ikisi Windows'a çift önyükleme yapıyor ve misafirimiz olduğunda, genellikle Windows bilgisayarları da çalıştırıyorlar. Bu nedenle, NFS kullanımına ek olarak, dosya sunucumuz (Ubuntu sunucusu) da Samba'yı çalıştırır.

Ve çoğunlukla Ubuntu kullandığımız için, karakterleri \:*?"<>|bir dosya adında kullanabilmek gibi Windows üzerindeki avantajlarından yararlanmak istiyoruz . Sorun, elbette, Windows'un dosya adlarında bu karakterleri kabul etmemesi ve Samba'nın dosya adını daha kabul edilebilir bir şeye çevirmesi gerektiğidir. Ancak bunu nasıl yaparsam iğrenç buluyorum.

Episode 182 - Exorcist 2: The Heretic.mp4Örneğin dosya adı dönüşür E4Q82R~Y.MP4. Bu korkunç bir "düzeltme" dir. Samba'nın yönetimini insanlar için biraz daha dostane hale getirmenin bir yolu var mı? Episode 182 - Exorcist 2_ The Heretic.mp4Bunun yerine, yasadışı karakterlerin basitçe ikame edildiği gibi bir şeye "düzeltilmesi" mümkün mü ?


2
Bu yamanın Samba Posta Listesindeki açıklamasına göz atın . Açıklanan yöntem kutusundan çıktığı gibi çalışıyor Samba 4.1.4-Debian.
mpy

@mpy Bunu denedim ama samba paylaşımına yasadışı windows karakterleri olan dosyaları kopyaladığımda hala çalışmıyor. Yalnızca tamam olan şeyleri (sembole dönüştürülmüş bir boşluk gibi) dönüştürmek için çalışır, ancak işe yaramayacak şeyler için değil (':' gibi başka bir sembole dönüştürülür). İşaretçi var mı?
pd12

Yanıtlar:


12

mangled map artık kullanımdan kaldırıldı ve artık Samba'nın yeni sürümlerinde çalışmaz.

Sorunu çözmek için vfs_catia kullanabilirsiniz . Smb.conf dosyasına aşağıdaki satırları ekleyin:

vfs objects = catia
catia:mappings = 0x003a:0x2236,0x003f:0x0294,0x002a:0x2217,0x003c:0x276e,0x003e:0x276f,0x0022:0x02ba,0x007c:0x2223,0x005c:0x29f9

Eşleme, iki nokta üst üste işareti ile ayrılmış 0x ön ekli onaltılık karakter kodlarıyla belirtilir. Sağlanan eşleme, yasadışı karakterleri, herhangi bir dilde kullanılması muhtemel olmayan unicode görünüm numaralarına yeniden eşleyecektir.

:? * <> "| \
∶ ʔ ∗ ❮ ❯ ʺ ∣ ⧹

Kod [global]tek bir [share]bölümün altına veya içine konabilir . Yerleştirilmesi [global]performansı etkileyebilir.

Haritalamak istediğiniz karakterlerin sunucudaki dosya adlarında kullanılamayacağını veya erişilemeyeceğini unutmayın.

Örnek: file❮name.txtSunucuda adlandırılan bir dosyaya erişen bir Windows istemcisi file<name.txt, eşleme nedeniyle sunucudan istekte bulunacak ve bu da dosya bulunamamasına neden olacaktır.


Bunu denedim ama samba paylaşımına yasadışı windows karakterleri olan dosyaları kopyaladığımda hala çalışmıyor. Yalnızca tamam olan şeyleri (sembole dönüştürülmüş bir boşluk gibi) dönüştürmek için çalışır, ancak işe yaramayacak şeyler için değil (':' gibi başka bir sembole dönüştürülür). İşaretçi var mı?
pd12

2
Harika çalışıyor! Dikkat edilmesi gereken bir şey, her şeyi aynı karakterle eşleyememeniz ve örneğinizde, içinde gerçekten bir alt çizgi bulunan hiçbir şeye artık erişilemez. Onun yerine aşağıdaki eşleştirmeleri kullanılır: 0x3a:0x7e 0x3f:0x5eyani :olur ~ve ?olur ^.
Geoffrey

2

Gelen bu bağlantı size bozma seçeneklerini görebilirsiniz. Önce seçeneği devre dışı bırakmanız gerektiğini düşünüyorum:

mangled names

Bundan sonra isimlerin daha iyi görünmesi gerektiğini düşünüyorum ...

İki nokta üst üste işaretini değiştirmek için, örneğin bu satırı kullanın:

mangled map =(: _)

Bunun gibi daha fazla değiştirme kuralı ekleyebilirsiniz:

mangled map =(: _) (foo bar)

(ayrıca herhangi bir foo oluşumunu çubukla değiştirir)


Şimdi daha iyi görünüyorlar. Aslında, "karışık adlar" ı "hayır" olarak ayarladığımda, Windows'ta dosya adları tamamen değişmedi. Bu kesinlikle iken görünüyor daha iyi, aynı zamanda dosyaları açamıyor Windows uygulamalarını yapar. Bir dosyayı tes:t.txtNot Defteri'nde açmaya çalışırsam , örneğin, "[...] \ tes: t.txt dosyası bulunamıyor." Aynı şey, kendi uygulamalarındaki diğer "yasadışı" dosyalar için de geçerlidir.
Alex

cevabımı düzenledi!
Michael K

mangled mapSamba'dan kaldırıldı. Biraz etrafa baktıktan sonra söyleyebileceğimden, yıllar önce kaldırıldı. Bu benim ne log.smbdbunu kullanmaya çalışırsanız dosya diyor ki:Ignoring unknown parameter "mangled map"
Alex

Haklısın ... kullanımdan kaldırıldı. Çalışmaz. Bu kadar basit değil - karmaşık dosya adı, dame adına sahip iki dosya olmasını önlemek. Foo: .txt ve foo_.txt dosyası mevcut olabilir ve yeniden adlandırma işleminiz başarısız olur. Bu yüzden en iyisi, her iki dosya sisteminde de izin verilen adlara izin verecek şekilde dosya adı kurallarını uygulamaktır.
Michael K

1

Daha yeni POSIX istemcileri (en azından Linux ve macOS) elle karakter eşlemeye ihtiyaç duymaz ve bunun yerine sunucu ile karşılıklı işbirliği yapabilir, böylece NTFS ayrılmış karakterlerle dosya adları sorunsuz çalışır. Başına Samba docs ve adam sayfalarında:

Sunucuda (bkz. man vfs_fruit):

vfs objects = catia fruit
fruit:encoding=native

İstemcide, mapcharsseçenekle monte etmek gerekebilir (bkz. man mount.cifs).

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.