Esporta percorso NFS contenente “-” (trattino)


10

Sono un po 'un pizzico con il file di esportazione NFS.

In particolare, non riesco a trovare un modo per esportare una directory contenente "-" nel nome del percorso.

Il manuale (export (5)) afferma:

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.

Quindi afferma:

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.

Sfortunatamente, non è così. In particolare, se il nome del percorso contiene "-", alla lettera o con \ 055 o è racchiuso tra virgolette doppie, si riferisce comunque al nome senza "-"

Qualche idea? Ho un gran numero di directory, tutte in forma

  • / Vol / di compilazione-S3C2440
  • / Vol / di compilazione-tao3530

e preferirei averli tutti disponibili come esportazioni nfs. A parte la sostituzione del "-" con "_" ovunque negli script, si può fare con "-"?


Non ho una risposta solida, ma questo mi è saltato in testa: hai una sorta di gestore nfs disponibile (probabilmente qualche app X scadente) che genererebbe il file di esportazione per te? Forse provalo sulla macchina di prova solo per controllare la sintassi e quindi implementare sulla casella in questione. Solo un pensiero ...
功 律 功

Non conosco nessuna di queste
utilità

1
Quale versione di nfs-utils hai?
Kjetil Jørgensen,

Funziona per me con 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- smetti di essere malvagio' il

Su quale sistema sei? La mia ipotesi è che è possibile backslash sfuggire usando Linux nfs-kernel-server, ma non Linux nfs-user-server.
Mikel,

Risposte:


3

Sulla base di questo testo, presumo che tu sia su Linux?

Se un nome di esportazione contiene spazi, deve essere quotato usando virgolette doppie. È inoltre possibile specificare spazi o altri caratteri insoliti nel nome dell'esportazione utilizzando una barra rovesciata seguita dal codice carattere come tre cifre ottali.

Esistono due diverse implementazioni del server NFS sui sistemi Linux:

  • utente NFS
  • kernel NFS

Prova a correre ps -ef | grep nfsdper vedere quale hai.

Penso che l'utente NFS apparirà come nfsdo unfsde il kernel NFS apparirà come [nfsd].
(Nota come uno ha parentesi quadre, ma l'altro no.)

Con il kernel NFS dovresti usare virgolette doppie o escape ottali, ad es

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

o

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

(Riferimento: nfs-utils-1.1.2, xgettokin support/nfs/xio.c)

Con l'utente NFS, gli spazi non sono consentiti nei nomi di esportazione, ma un segno meno ( -) non dovrebbe richiedere l'escaping, ad es

/path/to/mount-point <options>

(Riferimento: nfs-user-server-2.2beta47, filt_getcin auth_init.c)

Se non riesci ad arrivare fino in fondo, ti suggerirei di passare dall'utente NFS al kernel NFS in modo da poter utilizzare virgolette o escape ottali.

Su Debian e Ubuntu:

  • apt-get install kernel-nfs-server

Su Red Hat e Fedora:

  • yum install nfs-utils

1

La fuga con la barra rovesciata funziona?

  • / Vol / di compilazione \ -s3c2440
  • / Vol / di compilazione \ -tao3530

Sì, ci ho provato. No, questo non funziona :(
qdot


1

Ok, forse un'altra soluzione alternativa. È un po 'problematico, ma perché non creare una directory che contiene collegamenti simbolici a tutte le directory precedenti (uno script o un ciclo while potrebbe essere usato per questo). Se i nomi dei collegamenti simbolici non contengono alcun trattino, dovresti essere in grado di esportarli. In questo modo, come desiderato, non è necessario modificare i nomi delle directory reali.

Non sono sicuro che funzionerebbe, ma probabilmente vale la pena provarlo, no?


1

Questo è un po 'un trucco ma è possibile creare montaggi di bind in ciascuna delle directory ed esportare le destinazioni dei montaggi di bind. Qualcosa di simile a:

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

Non sono sicuro che avere tonnellate di mount rallenterà l'accesso ai file.

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.