Um nome de Samba mais amigável para humanos

11

A maioria dos nossos computadores executa o Ubuntu, mas dois deles são de inicialização dupla no Windows e, quando temos convidados, eles geralmente também executam computadores com Windows. Assim, além de usar o NFS, nosso servidor de arquivos (servidor Ubuntu) também executa o Samba.

E como usamos o Ubuntu principalmente, gostamos de aproveitar suas vantagens sobre o Windows, como poder usar os caracteres \:*?"<>|em um nome de arquivo. O problema, é claro, é que o Windows não aceita esses caracteres nos nomes dos arquivos e, portanto, o Samba precisa traduzir o nome do arquivo em algo mais aceitável. A maneira como faz isso, no entanto, acho desagradável.

O nome do arquivo, Episode 182 - Exorcist 2: The Heretic.mp4por exemplo, se transforma em E4Q82R~Y.MP4. Esta é uma terrível "correção". Existe uma maneira de tornar o samba do Samba um pouco mais amigável para os seres humanos? É possível "corrigi-lo" para algo como Episode 182 - Exorcist 2_ The Heretic.mp4, em vez disso, onde os caracteres ilegais são simplesmente substituídos?

Alex
fonte
1
Confira a descrição desse patch na lista de discussão do Samba . O método descrito está funcionando imediatamente Samba 4.1.4-Debian.
Mpy
@pypy Eu tentei isso, mas ainda não funciona quando copio arquivos com caracteres ilegais do Windows para o meu compartilhamento de samba. Ele funciona apenas para converter coisas que estariam bem (como um espaço convertido em um símbolo), mas não para coisas que não funcionariam (como ':' convertido em outro símbolo). Alguma dica?
Pd12 9/04

Respostas:

11

mangled map agora está obsoleto e não funcionará mais em novas versões do Samba.

Você pode usar vfs_catia para resolver o problema. Adicione as seguintes linhas ao smb.conf:

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

O mapeamento é especificado com códigos de caracteres hexedecimais prefixados 0x, separados por dois pontos. O mapeamento fornecido remapeará caracteres ilegais para unicode semelhantes que dificilmente serão usados ​​em qualquer idioma.

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

O código pode ser colocado [global]em uma [share]seção ou em uma seção individual . Colocá-lo [global]pode afetar o desempenho.

Observe que qualquer personagem para o qual você mapeia não pode ser usado nos nomes de arquivos no servidor ou eles estarão inacessíveis.

Exemplo: Um cliente Windows que acessa um arquivo nomeado file❮name.txtno servidor solicitará file<name.txto servidor devido ao mapeamento, o que resultará em um erro de arquivo não encontrado.

Emil
fonte
Eu tentei isso, mas ele ainda não funciona quando copio arquivos com caracteres ilegais do Windows para o meu compartilhamento de samba. Ele funciona apenas para converter coisas que estariam bem (como um espaço convertido em um símbolo), mas não para coisas que não funcionariam (como ':' convertido em outro símbolo). Alguma dica?
Pd12 09/04
2
Isso funciona muito bem! Uma coisa a observar é que você não pode mapear tudo para o mesmo personagem e, no seu exemplo, qualquer coisa que tenha um sublinhado de verdade não será mais acessível. Em vez disso, usei os seguintes mapeamentos:, 0x3a:0x7e 0x3f:0x5eassim :torna ~- ?se e torna - se ^.
Geoffrey
2

Em este link você pode ver as opções mangling. Acho que primeiro você deve desativar a opção:

mangled names

Depois disso, acho que os nomes devem ficar melhores ...

Para substituir os dois pontos, por exemplo, use esta linha:

mangled map =(: _)

Você pode adicionar mais regras de substituição como esta:

mangled map =(: _) (foo bar)

(também substitui qualquer ocorrência de foo por barra)

Michael K
fonte
Eles parecem melhores agora. De fato, quando defino "nomes desconfigurados" como "não", os nomes dos arquivos aparecem no Windows completamente inalterados. Embora isso certamente pareça melhor, também torna os aplicativos Windows incapazes de abrir os arquivos. Se eu tentar abrir um arquivo tes:t.txtno bloco de notas, por exemplo, me dizem "Não é possível encontrar o [...] arquivo \ tes: t.txt." O mesmo acontece com outros arquivos "ilegais" em seus respectivos aplicativos.
1128 Alex
editou minha resposta!
Michael K
mangled mapfoi removido do Samba. Pelo que posso dizer, depois de um pouco olhando ao redor, ele foi removido anos atrás. Este é o meu log.smbdarquivo diz que se eu tentar usá-lo:Ignoring unknown parameter "mangled map"
Alex
Você está certo ... preterido. Isso não vai funcionar. Não é tão simples - o nome do arquivo complicado é evitar ter dois arquivos com o nome da dama. Os arquivos foo: .txt e foo_.txt podem existir e sua renomeação falhará. Portanto, o melhor seria impor regras de nome de arquivo, de modo que somente nomes permitidos sejam permitidos nos dois sistemas de arquivos.
Michael K