NFSv4 客户端无法挂载包含括号或空格的导出,但在 NFSv3 上可以运行

NFSv4 客户端无法挂载包含括号或空格的导出,但在 NFSv3 上可以运行

当您尝试挂载包含空格或括号字符的路径时,NFSv4 会出现问题。NFSv3 使用指向实际文件夹的符号链接的路径工作正常,而 NFSv4 则不行。我无法更改 Dropbox 安装路径,否则会出现不同的问题,因此它必须保持原样。以下是我尝试过的配置和结果。

NFS Server:
Debian 8.4
NFS Client:
RHEL 7.2

该服务器安装了 Dropbox,它创建了如下所示的符号链接:

From:
/home/USER_ACCOUNT/Dropbox/
To:
/home/USER_ACCOUNT/Dropbox (corp)/

服务器上导出的路径:(我尝试使用完整路径,结果相同,因此在下面的示例中我使用了符号链接)

/home/USER_ACCOUNT/Dropbox/HOSTXX_BACKUP/GUESTXX_BACKUP XXX.XXX.XXX.XXX(rw,sync,no_subtree_check)

客户端 fstab 中的路径:

XXX.XXX.XXX.XXX:/home/USER_ACCOUNT/Dropbox/040(corp)/HOSTXX_BACKUP/GUESTXX_BACKUP /nfs_mount nfs4     rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,timeo=600 0 0

在客户端安装时,我可以通过像下面这样替换它来使用该空间:

/home/USER_ACCOUNT/Dropbox (corp)/
becomes:
/home/USER_ACCOUNT/Dropbox\040(corp)/

现在客户端返回以下错误:

mount.nfs4: mounting XXX.XXX.XXX.XXX:/home/USER_ACCOUNT/Dropbox/040(corp)/HOSTXX_BACKUP/GUESTXX_BACKUP failed, reason given by server: No such file or directory

当我采用该路径并尝试在服务器上通过 cd 进入该路径时,它似乎卡在括号字符处并返回以下错误:

-bash: syntax error near unexpected token `('

到目前为止,我还没有找到处理括号字符的方法。当我尝试在安装时使用 /etc/fstab 中的标准转义序列时,它会截断转义斜杠后的所有内容。

我也尝试过“mount -d bind”,但没有成功。新文件夹和原始路径(绝对路径和符号路径)都显示为空,就像数据消失了一样,直到我重新启动。

答案1

正如问题所述,/etc/fstab空格中的 应该替换为\040,而不是/040,因此 fstab 行应该是:

XXX.XXX.XXX.XXX:/home/USER_ACCOUNT/Dropbox\040(corp)/HOSTXX_BACKUP/GUESTXX_BACKUP /nfs_mount nfs4     rw,bg,hard,nointr,rsize=32768,wsize=32768,tcp,actimeo=0,timeo=600 0 0

在 shell 命令行中,空格应该用引号引起来:

mount -t nfs4 'XXX.XXX.XXX.XXX:/home/USER_ACCOUNT/Dropbox (corp)/HOSTXX_BACKUP/GUESTXX_BACKUP' /nfs_mount

或者:

cd '/home/USER_ACCOUNT/Dropbox (corp)/HOSTXX_BACKUP/GUESTXX_BACKUP'

相关内容