Exportar ruta NFS que contiene "-" (guión)


10

Estoy un poco pellizcado con el archivo de exportaciones NFS.

Específicamente, no puedo encontrar una manera de exportar un directorio que contenga "-" en el nombre de la ruta.

El manual (exportaciones (5)) establece:

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.

Luego declara:

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.

Desafortunadamente, ese no es el caso. Específicamente, si el nombre de ruta contiene "-", ya sea textualmente, o con \ 055 o está entre comillas dobles, todavía se refiere al nombre sin "-"

¿Algunas ideas? Tengo una gran cantidad de directorios, todos los formularios

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

y preferiría tenerlos disponibles como exportaciones nfs. Si no se reemplaza el "-" con "_" en todas partes en los scripts, ¿se puede hacer con "-"?


No tengo una respuesta sólida, pero esto apareció en mi cabeza: ¿Tiene algún tipo de administrador nfs disponible (probablemente alguna aplicación cursi X) que generaría el archivo de exportaciones para usted? Tal vez intente en la máquina de prueba solo para verificar la sintaxis y luego implementarla en el cuadro en cuestión. Solo un pensamiento ...
英 律 功

No sé de cualquiera de dichas utilidades ...
Qdot

1
¿Qué versión de nfs-utils tienes?
Kjetil Jørgensen

Funciona para mí bajo Debian lenny (NFS utils 1.1.2, kernel 2.6.26) con /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in /etc/exports.
Gilles 'SO- deja de ser malvado'

¿En qué sistema estás? Supongo que puede hacer una barra invertida para escapar usando Linux nfs-kernel-server, pero no Linux nfs-user-server.
Mikel

Respuestas:


3

Según este texto, supongo que estás en Linux.

Si un nombre de exportación contiene espacios, debe citarse con comillas dobles. También puede especificar espacios u otros caracteres inusuales en el nombre de la exportación utilizando una barra invertida seguida del código de caracteres como tres dígitos octales.

Hay dos implementaciones diferentes de servidores NFS en sistemas Linux:

  • usuario NFS
  • kernel NFS

Intenta correr ps -ef | grep nfsdpara ver cuál tienes.

Creo que el usuario NFS aparecerá como nfsdo unfsd, y el kernel NFS aparecerá como [nfsd].
(Observe cómo uno tiene corchetes, pero el otro no).

Con el kernel NFS debe usar comillas dobles o escapes octales, por ejemplo

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

o

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

(Referencia: nfs-utils-1.1.2, xgettoken support/nfs/xio.c)

Con el usuario NFS, no se permiten espacios en los nombres de exportación, pero un signo menos ( -) no debería requerir escapar, por ejemplo

/path/to/mount-point <options>

(Referencia: nfs-user-server-2.2beta47, filt_getcen auth_init.c)

Si no puede llegar al fondo, sugeriría cambiar del usuario NFS al kernel NFS para que pueda usar comillas o escapes octales.

En Debian y Ubuntu:

  • apt-get install kernel-nfs-server

En Red Hat y Fedora:

  • yum install nfs-utils

1

¿Funciona escapar con barra invertida?

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

Sí, lo intenté. No, esto no funciona :(
qdot


1

Ok, tal vez otra solución. Es un poco problemático, pero ¿por qué no crear un directorio que contenga enlaces simbólicos a todos los directorios anteriores (se podría usar un script o un bucle while para esto)? Si los nombres de los enlaces simbólicos no contienen ningún guión, debería poder exportarlos. De esta manera, como deseaba, no necesitaría modificar los nombres de sus directorios reales.

No estoy seguro de si funcionaría, pero probablemente valga la pena intentarlo, ¿no?


1

Es un truco, pero puede crear montajes de enlace para cada uno de los directorios y exportar los destinos de los montajes de enlace. Algo como:

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

Sin embargo, no estoy seguro de si tener toneladas de monturas ralentizará el acceso a los archivos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.