Eksportuj ścieżkę NFS zawierającą „-” (myślnik)

10

Trochę mi się podoba plik eksportu NFS.

W szczególności nie mogę znaleźć sposobu na wyeksportowanie katalogu zawierającego „-” w nazwie ścieżki.

Instrukcja (eksport (5)) stanowi:

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.

Następnie stwierdza:

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.

Niestety tak nie jest. W szczególności, jeśli nazwa ścieżki zawiera „-”, albo dosłownie, albo \ 055 lub jest ujęta w cudzysłów, nadal odnosi się do nazwy bez „-”

Jakieś pomysły? Mam dużą liczbę katalogów, wszystkie w formie

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

i wolałbym mieć je wszystkie dostępne jako eksport NFS. Czy zamiast skryptu „-” na „_” wszędzie w skryptach, można to zrobić za pomocą „-”?

qdot
źródło
Nie mam solidnej odpowiedzi, ale przyszło mi to do głowy: Czy masz jakiś menedżer NFS (prawdopodobnie tandetna aplikacja X), który wygenerowałby dla ciebie plik eksportu? Może wypróbuj to na maszynie testowej, aby sprawdzić składnię, a następnie zaimplementuj odpowiednie pole. Tylko myśl ...
功 律 功
Nie znam takich narzędzi ...
qdot
1
Jaką masz wersję nfs-utils?
Kjetil Jørgensen,
Działa dla mnie pod Debianem Lenny (NFS utils 1.1.2, jądro 2.6.26) z /var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in /etc/exports.
Gilles „SO- przestań być zły”
W jakim systemie jesteś? Domyślam się, że można uciec z ukośnikiem odwrotnym, używając Linuksa nfs-kernel-server, ale nie Linuksa nfs-user-server.
Mikel

Odpowiedzi:

3

Na podstawie tego tekstu zakładam, że korzystasz z systemu Linux?

Jeśli nazwa eksportu zawiera spacje, powinna być cytowana za pomocą podwójnych cudzysłowów. Możesz również określić spacje lub inny nietypowy znak w nazwie eksportu, używając ukośnika odwrotnego, a następnie kodu znaku jako trzech cyfr ósemkowych.

Istnieją dwa różne wdrożenia serwera NFS w systemach Linux:

  • użytkownik NFS
  • jądro NFS

Spróbuj uruchomić, ps -ef | grep nfsdaby zobaczyć, który masz.

Myślę, że NFS użytkownika pojawi się jako nfsdlub unfsd, a NFS jądra pojawi się jako [nfsd].
(Zauważ, że jeden ma nawiasy kwadratowe, a drugi nie.)

W jądrze NFS powinieneś używać podwójnych cudzysłowów lub znaków ósemkowych, np

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

lub

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

(Odwołanie: nfs-utils-1.1.2, xgettokin support/nfs/xio.c)

W przypadku użytkownika NFS spacje nie są dozwolone w nazwach eksportu, ale znak minus ( -) nie powinien wymagać zmiany znaczenia, np

/path/to/mount-point <options>

(Odwołanie: nfs-user-server-2.2beta47, filt_getcin auth_init.c)

Jeśli nie możesz dojść do sedna, sugerowałbym przejście z NFS użytkownika na NFS jądra, abyś mógł używać cudzysłowów lub znaków ósemkowych.

W systemach Debian i Ubuntu:

  • apt-get install kernel-nfs-server

W Red Hat i Fedorze:

  • yum install nfs-utils
Mikel
źródło
1

Czy ucieczka z odwrotnym ukośnikiem działa?

  • / vol / buildsystem \ -s3c2440
  • / vol / buildsystem \ -tao3530
nick3216
źródło
Tak, próbowałem tego. Nie, to nie działa :(
qdot
1

Czy próbowałeś po prostu uciec \-. Nie jestem ekspertem od NFS - ale warto spróbować. Działa w wielu innych sytuacjach ...

Danny Staple
źródło
Tak, próbowałem tego. Nie, to nie działa.
qdot
Tutaj - graficzne narzędzie NFS do rozważenia: dailypackage.fedorabook.com/index.php?/archives/…
Danny Staple
1

Ok, może inne obejście. Jest to trochę kłopotliwe, ale dlaczego nie stworzyć katalogu zawierającego dowiązania symboliczne do wszystkich poprzednich katalogów (do tego celu można użyć skryptu lub pętli while). Jeśli nazwy dowiązań symbolicznych nie zawierają myślnika, możesz je wyeksportować. W ten sposób, jak sobie życzysz, nie będziesz musiał modyfikować nazw swoich prawdziwych katalogów.

Nie jestem pewien, czy to zadziała, ale prawdopodobnie warto spróbować, prawda?

Christian Vincenot
źródło
1

Jest to trochę włamanie, ale możesz utworzyć uchwyty powiązań do każdego z katalogów i wyeksportować miejsca docelowe podłączeń. Coś jak:

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

Nie jestem jednak pewien, czy posiadanie mnóstwa mocowań spowolni dostęp do plików.

Wielkanocne Słońce
źródło