我正在尝试使用 davfs 在 /etc/fstab 中挂载一个 webdav 服务器,但是当我尝试在我的文件管理器(Thunar)中打开它时,我会收到错误:
Failed to mount "My Folder"
/sbin/mount.davfs: different URL in /etc/fstab
/etc/fstab 中的条目如下所示:
http://<server_url>/my/path/Doe\054\040John/ /home/john/My\040Folder davfs user,noauto 0 0
但我仍然可以成功安装它:
sudo mount -t davfs http://<server-url>/my/path/Doe,\ John/ /home/john/My\ Folder
你知道我在 /etc/fstab 中做错了什么吗?
感谢您的帮助!
答案1
总结又有趣的部分:
在/etc/fstab
文件中,你应该不是逃离逗号字符,而空格和制表符必须使用以零填充的八进制数字进行转义,并以反斜杠开头,\
如 fstab 的手册页中所述。对于您的情况,URL 字符串应如下所示:
http://<server_url>/my/path/Doe,\040John/
无聊的部分:
首先,你应该看一下这个: https://superuser.com/a/527503/938480
我将在此引用上述帖子的最后一句话,我认为这对于答案至关重要:
请注意,虽然支持代码点对于其他角色来说,支持也相当不稳定在我的计算机上,你可以用 \127 代替 W,但不能用 \070 代替 8……
davfs2 人员指出:
带有空格的 URL 和挂载点 路径名中的特殊字符(如空格)很乱。不同的程序和协议对它们的解释不同,并且有不同的转义规则。在 fstab 中,空格必须用三位八进制转义序列替换。写http://foo.bar/path\040with\040spaces代替 http://foo.bar/路径带空格。对于 davfs2.conf 和 secrets 文件,请参阅 davfs2.conf(5) 手册页中描述的转义和引号规则。在命令行上,您必须遵守 shell 的转义规则。
最后让我们看一下 fstab 手册本身:
第二个字段(fs_file)。此字段描述文件系统的挂载点。对于交换分区,此字段应指定为“无”。如果挂载点的名称包含空格,则可以将其转义为“\040”
正如我们上面看到的,除了空格和制表符之外,实际上没有提到任何内容。
我已经使用一个免费的在线 Nextcloud 实例测试了该问题(Nextcloud 本身带有内置的 WevDAV 支持),并且使用与示例中相同的文件夹名称Doe, John
和相同的转义序列时出现了相同的错误\054\040
。然后我删除了逗号的转义,它就可以正常安装了。
答案2
信息太少,无法提示这里出了什么问题 - 但安装后davfs2我的工作 fstab 条目如下所示:
https://my-owncloud-url/remote.php/webdav /media/owncloud/ davfs user,noauto,rw,_netdev 0 0
效果很好...只需更改 fstab 的内容后,您就可以通过输入来检查它是否正常工作
sudo mount -a
或者输入
sudo mount mountpoint-here
但请记住 - 在初始化挂载之前该文件夹必须存在......