13 votes

Une gestion des noms de Samba plus conviviale pour l'homme

La plupart de nos ordinateurs fonctionnent sous Ubuntu, mais deux d'entre eux sont en double amorçage avec Windows, et lorsque nous recevons des invités, ils utilisent généralement aussi des ordinateurs Windows. Ainsi, en plus d'utiliser NFS, notre serveur de fichiers (serveur Ubuntu) utilise également Samba.

Et comme nous utilisons principalement Ubuntu, nous aimons profiter de ses avantages par rapport à Windows, comme la possibilité d'utiliser les caractères \:*?"<>| dans un nom de fichier. Le problème, bien sûr, est que Windows n'accepte pas ces caractères dans les noms de fichiers, et Samba doit donc traduire le nom de fichier en quelque chose de plus acceptable. La façon dont il le fait, cependant, je trouve que c'est odieux.

Le nom du fichier Episode 182 - Exorcist 2: The Heretic.mp4 par exemple, se transforme en E4Q82R~Y.MP4 . C'est une terrible "correction". Existe-t-il un moyen de rendre le traitement de Samba un peu plus convivial pour les humains ? Est-il possible de la "corriger" en quelque chose comme Episode 182 - Exorcist 2_ The Heretic.mp4 à la place, où les caractères illégaux sont simplement substitués ?

14voto

Emil Points 141

mangled map est maintenant déprécié et ne fonctionnera plus dans les nouvelles versions de Samba.

Vous pouvez utiliser vfs_catia pour résoudre le problème. Ajoutez les lignes suivantes au fichier smb.conf :

vfs objects = catia
catia:mappings = 0x003a:0x2236,0x003f:0x0294,0x002a:0x2217,0x003c:0x276e,0x003e:0x276f,0x0022:0x02ba,0x007c:0x2223,0x005c:0x29f9
Le mappage est spécifié avec des codes de caractères hexadécimaux préfixés 0x et séparés par un deux-points. Le mappage fourni remappera les caractères illégaux en caractères similaires à ceux de l'unicode qui ne seront probablement utilisés dans aucune langue.

? * < > " | \

Le code peut être placé sous [global] ou dans un individu [share] section. En le plaçant dans [global] peut avoir un impact sur les performances.

Notez que les caractères que vous mettez en correspondance ne peuvent pas être utilisés dans les noms de fichiers sur le serveur, sinon ils seront inaccessibles.

Exemple : Un client Windows accède à un fichier nommé filename.txt sur le serveur demandera file<name.txt du serveur en raison du mappage, ce qui entraînera une erreur de fichier non trouvé.

2voto

Michael K Points 13190

En ce lien vous pouvez voir les options de maniement. Je pense que vous devriez d'abord désactiver l'option :

mangled names

Après cela, je suppose que les noms devraient être plus beaux...

Pour remplacer les deux points, par exemple, utilisez cette ligne :

mangled map =(: _)

Vous pouvez ajouter d'autres règles de remplacement comme ceci :

mangled map =(: _) (foo bar)

(remplace également toute occurrence de foo par bar)

1voto

Will I Am Points 372

Les clients POSIX plus récents (au moins Linux et macOS) n'ont pas besoin de mappage manuel des caractères, et peuvent au contraire coopérer mutuellement avec le serveur pour que les noms de fichiers avec des caractères réservés NTFS fonctionnent parfaitement. Par Documentation sur Samba et les pages de manuel :

Sur le serveur (voir man vfs_fruit ) :

vfs objects = catia fruit
fruit:encoding = native

Sur le client, il peut être nécessaire de monter avec l'option mapposix * (voir man mount.cifs ).


*Il semble que mapchars devrait est la bonne option, mais avec des tests, mapposix est ce qui fonctionne.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X