导出包含“-”的NFS路径(破折号)


10

我对NFS导出文件有些不满。

具体来说,我找不到导出路径名中包含“-”的目录的方法。

手册(exports(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或用双引号引起来),则仍引用不带“-”的名称

有任何想法吗?我有很多目录,所有形式

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

而且我更希望将它们全部作为nfs出口提供。脚本中到处都没有用“ _”替换“-”,可以用“-”完成吗?


我没有一个明确的答案,但这确实浮现在脑海:您是否有可用的nfs管理器(可能是一些俗气的X应用程序)会为您生成导出文件?也许在测试机上尝试一下,只是为了检查语法,然后在有问题的框中实现即可。只是一个想法...
英律功2010年

我不知道有这样的工具...
qdot 2010年

1
您有什么版本的nfs-utils?
KjetilJørgensen2010年

在Debian lenny(NFS utils 1.1.2,内核2.6.26)下,通过/var/tmp/foo-bar localhost(all_squash,async,no_subtree_check)in 为我工作/etc/exports
吉尔斯(Gilles)“所以,别再邪恶了”,2010年

您在什么系统上?我的猜测是您可以使用Linux反斜杠转义它nfs-kernel-server,但不能使用Linux nfs-user-server
Mikel

Answers:


3

根据本文,我假设您使用的是Linux?

如果导出名称包含空格,则应使用双引号将其引起来。您还可以在导出名称中使用反斜杠,后跟字符代码作为三个八进制数字来指定空格或其他异常字符。

Linux系统上有两种不同的NFS服务器实现:

  • 用户NFS
  • 内核NFS

请尝试运行ps -ef | grep nfsd以查看拥有哪一个。

我认为用户NFS将显示为nfsdunfsd,内核NFS将显示为[nfsd]
(请注意,一个有方括号,而另一个没有。)

对于内核NFS,您应该使用双引号或八进制转义符,例如

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

要么

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

(参考:NFS-utils的-1.1.2,xgettoksupport/nfs/xio.c

对于用户NFS,导出名称中不允许使用空格,但是减号(-)不需要转义,例如

/path/to/mount-point <options>

(参考:NFS-用户-服务器- 2.2beta47,filt_getcauth_init.c

如果您不能完全了解,我建议您从用户NFS切换到内核NFS,以便可以使用引号或八进制转义。

在Debian和Ubuntu上:

  • apt-get install kernel-nfs-server

在Red Hat和Fedora上:

  • yum install nfs-utils

1

用反斜杠转义有效吗?

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

是的,我尝试过。不,这不起作用:(
qdot 2010年


1

好的,也许是另一种解决方法。这有点麻烦,但是为什么不创建一个包含指向所有先前目录的符号链接的目录(可以使用脚本或while循环)。如果符号链接的名称不包含任何破折号,则应该能够导出它们。这样一来,您就不需要修改真实目录的名称。

我不确定它是否会起作用,但是可能值得尝试一下,不是吗?


1

这有点麻烦,但是您可以为每个目录创建绑定安装并导出绑定安装目标。就像是:

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

我不确定是否有大量的挂载会减慢文件访问速度。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.