Я немного напряжен с файлом экспорта NFS.
В частности, я не могу найти способ экспортировать каталог, содержащий «-» в имени пути.
Руководство (экспорт (5)) гласит:
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.
Затем говорится:
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.
К сожалению, это не так. В частности, если путь содержит "-", дословно, либо с \ 055, либо заключен в двойные кавычки, он все равно ссылается на имя без "-"
Есть идеи? У меня есть большое количество каталогов, все формы
- / Об / buildsystem-S3C2440
- / Об / buildsystem-tao3530
и я бы предпочел, чтобы все они были доступны в качестве экспорта NFS. Если не считать замены "-" на "_" везде в сценариях, можно ли это сделать с помощью "-"?
linux
networking
unix
nfs
qdot
источник
источник
/var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)
in/etc/exports
.nfs-kernel-server
, но не Linuxnfs-user-server
.Ответы:
Основываясь на этом тексте, я предполагаю, что вы работаете в Linux?
В системах Linux есть две разные реализации NFS-сервера:
Пожалуйста, попробуйте запустить,
ps -ef | grep nfsd
чтобы увидеть, какой у вас есть.Я думаю, что пользователь NFS будет отображаться как
nfsd
илиunfsd
, а ядро NFS будет отображаться как[nfsd]
.(Обратите внимание, что у одного квадратные скобки, а у другого нет.)
С ядром NFS вы должны использовать двойные кавычки или восьмеричные экранированные символы, например
или
(Ссылка: nfs-utils-1.1.2,
xgettok
вsupport/nfs/xio.c
)В пользовательской NFS пробелы не допускаются в именах экспорта, но знак минус (
-
) не должен требовать экранирования, например(Ссылка: nfs-пользователь-сервер-2.2beta47,
filt_getc
вauth_init.c
)Если вы не можете докопаться до сути, я бы предложил переключиться с пользовательской NFS на NFS ядра, чтобы вы могли использовать цитирование или восьмеричные экранированные символы.
В Debian и Ubuntu:
apt-get install kernel-nfs-server
На Red Hat и Fedora:
yum install nfs-utils
источник
Работает ли экранирование с обратной косой чертой?
источник
Вы пытались просто сбежать с
\-
. Я не эксперт по NFS, но стоит попробовать. Это работает во многих других ситуациях ...источник
Хорошо, может быть, другой обходной путь. Это немного хлопотно, но почему бы не создать каталог, содержащий символические ссылки на все предыдущие каталоги (для этого можно использовать скрипт или цикл while). Если имена символических ссылок не содержат тире, вы сможете экспортировать их. Таким образом, как вы и хотели, вам не нужно изменять имена ваших настоящих каталогов.
Я не уверен, что это сработает, но, наверное, стоит попробовать, не так ли?
источник
Это немного взломано, но вы можете создать bind mounts для каждого из каталогов и экспортировать места назначения bind mounts. Что-то типа:
Я не уверен, что наличие множества монтировок замедлит доступ к файлам.
источник