Un nome di Samba più amico dell'uomo che fa a pezzi


11

La maggior parte dei nostri computer esegue Ubuntu, ma due di essi si avviano in doppio su Windows e, quando abbiamo ospiti, in genere eseguono anche computer Windows. Pertanto, oltre a utilizzare NFS, il nostro file server (server Ubuntu) esegue anche Samba.

E poiché usiamo Ubuntu principalmente, ci piace sfruttare i suoi vantaggi rispetto a Windows, come la possibilità di usare i caratteri \:*?"<>|in un nome file. Il problema, ovviamente, è che Windows non accetta quei caratteri nei nomi dei file, e quindi Samba deve tradurre il nome del file in qualcosa di più accettabile. Il modo in cui lo fa, tuttavia, trovo essere odioso.

Il nome del file, Episode 182 - Exorcist 2: The Heretic.mp4ad esempio, si trasforma in E4Q82R~Y.MP4. Questa è una terribile "correzione". Esiste un modo per rendere la manomissione di Samba un po 'più amichevole con gli umani? È possibile "correggerlo" in qualcosa del genere Episode 182 - Exorcist 2_ The Heretic.mp4, invece, in cui i personaggi illegali vengono semplicemente sostituiti?


1
Controlla la descrizione di questa patch nella Mailing List di Samba . Il metodo descritto sta funzionando immediatamente con Samba 4.1.4-Debian.
mpy,

@mpy L'ho provato ma non funziona ancora quando copio i file con caratteri Windows illegali nella mia condivisione samba. Funziona solo per convertire cose che sarebbero andate bene (come uno spazio convertito in un simbolo), ma non per cose che non funzionerebbero (come ':' convertito in un altro simbolo). Qualche puntatore?
pd12,

Risposte:


11

mangled map è ora obsoleto e non funzionerà più nelle nuove versioni di Samba.

È possibile utilizzare vfs_catia per risolvere il problema. Aggiungi le seguenti righe a smb.conf:

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

La mappatura è specificata con codici di caratteri esadecimali con prefisso 0x separati da due punti. La mappatura fornita rimappa i caratteri illegali per unicodicare i sosia che è improbabile che vengano utilizzati in qualsiasi lingua.

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

Il codice può essere inserito in [global]o in una singola [share]sezione. Inserirlo [global]può influire sulle prestazioni.

Nota che qualsiasi personaggio mappato non può essere usato nei nomi di file sul server o saranno inaccessibili.

Esempio: un client Windows che accede a un file denominato file❮name.txtsul server richiederà file<name.txtdal server a causa della mappatura, che comporterà un errore di file non trovato.


Ci ho provato ma non funziona ancora quando copio i file con caratteri Windows illegali nella mia condivisione samba. Funziona solo per convertire cose che sarebbero andate bene (come uno spazio convertito in un simbolo), ma non per cose che non funzionerebbero (come ':' convertito in un altro simbolo). Qualche puntatore?
pd12,

2
Funziona benissimo! Una cosa da notare è che non è possibile mappare tutto sullo stesso personaggio e, nel tuo esempio, tutto ciò che ha un carattere di sottolineatura non sarà più accessibile. Invece ho usato i seguenti mapping:, 0x3a:0x7e 0x3f:0x5ecosì :diventa ~e ?diventa ^.
Geoffrey,

2

In questo link puoi vedere le opzioni di demolizione. Penso che prima dovresti disabilitare l'opzione:

mangled names

Dopodiché immagino che i nomi dovrebbero apparire migliori ...

Per sostituire i due punti, ad esempio, utilizzare questa riga:

mangled map =(: _)

Puoi aggiungere altre regole di sostituzione come questa:

mangled map =(: _) (foo bar)

(sostituisce anche qualsiasi occorrenza di foo by bar)


Ora stanno meglio. In effetti, quando ho impostato "nomi alterati" su "no", i nomi dei file vengono visualizzati in Windows completamente invariati. Anche se questo sembra sicuramente migliore, rende anche le applicazioni Windows in grado di aprire i file. Se provo ad aprire un file tes:t.txtin Blocco note, ad esempio, mi viene detto "Impossibile trovare il file [...] \ tes: t.txt." Lo stesso vale con altri file "illegali" nelle rispettive applicazioni.
Alex,

modificato la mia risposta!
Michael K,

mangled mapè stato rimosso da Samba. Da quello che posso dire dopo aver guardato un po 'in giro, è stato rimosso anni fa. Questo è ciò log.smbdche dice il mio file se provo ad usarlo:Ignoring unknown parameter "mangled map"
Alex

Hai ragione ... deprecato. Non funzionerà Non è così semplice: il nome file complicato impedisce di avere due file con il nome dame. Il file foo: .txt e foo_.txt potrebbero esistere e la tua ridenominazione fallirebbe. Quindi il migliore sarebbe far rispettare le regole sui nomi dei file in modo tale che siano consentiti solo i nomi consentiti in entrambi i file system.
Michael K,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.