Exporter le chemin NFS contenant «-» (tiret)

10

Je suis un peu dans le pincement avec le fichier d'export NFS.

Plus précisément, je ne trouve pas de moyen d'exporter un répertoire contenant "-" dans le nom du chemin.

Le manuel (exportations (5)) indique:

Also, each line may have one or more specifications for default options 
after the path name, in the form of a dash ("-") followed by an option 
list. The option list is used for all subsequent exports on that line 
only.

Il déclare ensuite:

If an export name contains spaces it should be quoted using double quotes. 
You can also specify spaces or other unusual character in the export name 
using a backslash followed by the character code as three octal digits.

Malheureusement, ce n'est pas le cas. Plus précisément, si le chemin contient "-", soit textuellement, soit avec \ 055 ou s'il est placé entre guillemets, il fait toujours référence au nom sans "-"

Des idées? J'ai un grand nombre de répertoires, tous les formulaires

  • / vol / buildsystem-s3c2440
  • / vol / buildsystem-tao3530

et je préfère les avoir tous disponibles en tant qu'export nfs. À moins de remplacer le "-" par "_" partout dans les scripts, cela peut-il être fait avec "-"?

qdot
la source
Je n'ai pas de réponse solide, mais cela m'est venu à l'esprit: avez-vous une sorte de gestionnaire nfs disponible (probablement une application X ringarde) qui générerait le fichier d'exportation pour vous? Peut-être l'essayer sur la machine de test juste pour vérifier la syntaxe puis l'implémenter sur la case en question. Juste une pensée ...
英 律 功
Je ne connais aucun de ces utils ...
qdot
1
Quelle version de nfs-utils possédez-vous?
Kjetil Jørgensen
Fonctionne pour moi sous Debian Lenny (NFS utils 1.1.2, kernel 2.6.26) avec /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in /etc/exports.
Gilles 'SO- arrête d'être méchant'
Sur quel système êtes-vous? Je suppose que vous pouvez échapper à la barre oblique inverse en utilisant Linux nfs-kernel-server, mais pas Linux nfs-user-server.
Mikel

Réponses:

3

Sur la base de ce texte, je suppose que vous êtes sous Linux?

Si un nom d'exportation contient des espaces, il doit être mis entre guillemets. Vous pouvez également spécifier des espaces ou tout autre caractère inhabituel dans le nom d'exportation à l'aide d'une barre oblique inverse suivie du code de caractère sous forme de trois chiffres octaux.

Il existe deux implémentations de serveur NFS différentes sur les systèmes Linux:

  • utilisateur NFS
  • noyau NFS

Veuillez essayer de courir ps -ef | grep nfsdpour voir lequel vous avez.

Je pense que l'utilisateur NFS apparaîtra comme nfsdou unfsd, et le noyau NFS apparaîtra comme [nfsd].
(Notez comment l'un a des crochets, mais pas l'autre.)

Avec le noyau NFS, vous devez utiliser des guillemets doubles ou des échappements octaux, par exemple

"/path/to/mount-point" <options>

ou

/path/to/mount\055point <options>

(Référence: nfs-utils-1.1.2, xgettokin support/nfs/xio.c)

Avec l'utilisateur NFS, les espaces ne sont pas autorisés dans les noms d'exportation, mais un signe moins ( -) ne devrait pas nécessiter d'échappement, par exemple

/path/to/mount-point <options>

(Référence: nfs-user-server-2.2beta47, filt_getcin auth_init.c)

Si vous ne pouvez pas aller au fond des choses, je vous suggère de passer de l'utilisateur NFS au noyau NFS afin que vous puissiez utiliser des échappements entre guillemets ou octaux.

Sur Debian et Ubuntu:

  • apt-get install kernel-nfs-server

Sur Red Hat et Fedora:

  • yum install nfs-utils
Mikel
la source
1

S'échapper avec une barre oblique inverse fonctionne-t-il?

  • / vol / buildsystem \ -s3c2440
  • / vol / buildsystem \ -tao3530
nick3216
la source
Oui, j'ai essayé ça. Non, cela ne fonctionne pas :(
qdot
1

Avez-vous essayé de simplement vous échapper avec \-. Je ne suis pas un expert NFS - mais ça vaut le coup d'essayer. Cela fonctionne dans de nombreuses autres situations ...

Danny Staple
la source
Oui, j'ai essayé ça. Non, ça ne marche pas.
qdot
Ici - un outil graphique NFS à considérer: dailypackage.fedorabook.com/index.php?/archives/…
Danny Staple
1

Ok, peut-être une autre solution de contournement. C'est un peu gênant, mais pourquoi ne pas créer un répertoire contenant des liens symboliques vers tous les répertoires précédents (un script ou une boucle while pourrait être utilisé pour cela). Si les noms des liens symboliques ne contiennent aucun tiret, vous devriez pouvoir les exporter. De cette façon, comme vous le souhaitiez, vous n'auriez pas besoin de modifier les noms de vos vrais répertoires.

Je ne sais pas si cela fonctionnerait, mais cela vaut probablement la peine de lui donner un coup de feu, n'est-ce pas?

Christian Vincenot
la source
1

C'est un peu un hack, mais vous pouvez créer des montages de liaison vers chacun des répertoires et exporter les destinations des montages de liaison. Quelque chose comme:

mount -o bind /vol/buildsystem-s3c2440 /vol/buildsystems3c2440
mount -o bind /vol/buildsystem-tao3530 /vol/buildsystemtao3530

Je ne sais pas si avoir des tonnes de supports ralentira l'accès aux fichiers.

Soleil de Pâques
la source