使用 davfs2 在 Linux 上挂载 WebDAV 网盘(以坚果云为例)

WebDAV(Web Distributed Authoring and Versioning)是一种允许通过 HTTP 协议将远程存储挂载到本地文件系统的技术。通过它,你可以像操作本地目录一样对远程文件进行 lscpmv 等操作。本文介绍如何在 Linux 系统中安装和配置 davfs2,并以坚果云(Nutstore / 坚果云)为例,演示挂载 WebDAV 目录的全过程。

一、前言

坚果云(Nutstore)是一款常用的云存储服务,提供 WebDAV 访问接口。通过使用 davfs2,我们可以在 Linux 系统中直接将坚果云的远程存储挂载到本地文件夹,实现与本地磁盘类似的管理方式。

二、安装 davfs2

1. Debian/Ubuntu 系列

sudo apt update
sudo apt install davfs2

安装过程中,系统可能会提示是否允许非 root 用户挂载 WebDAV 文件系统。如果希望普通用户也可以挂载,选择 Yes(或相应选项)。

2. RHEL/CentOS/Fedora 系列

sudo yum install davfs2

在较新的 Fedora / RHEL 系统上,也可以使用:

sudo dnf install davfs2

三、创建挂载点目录

在本地创建一个用于挂载坚果云的目录,例如:

sudo mkdir -p /mnt/nutstore

这个目录将作为本地与坚果云之间的挂载点。

四、配置 davfs2

4.1 配置登录凭证

如果坚果云的 WebDAV 访问需要用户名和密码,可以在 /etc/davfs2/secrets 文件中添加登录信息:

sudo nano /etc/davfs2/secrets

在文件末尾写入以下内容,将示例 URL、用户名和密码替换为你的实际信息:

https://dav.jianguoyun.com/dav  <你的用户名>  <你的密码>

保存后,为了安全起见,确保只有 root 或相应用户可读该文件:

sudo chmod 600 /etc/davfs2/secrets

4.2 修改 davfs2.conf(可选)

部分服务器或云服务可能对 WebDAV 协议支持不完全,导致出现类似错误:

mount.davfs: mounting failed; the server does not support WebDAV

这种情况下,可以尝试在 /etc/davfs2/davfs2.conf 中添加:

ignore_dav_header 1

该选项会忽略特定的协议头检查,从而兼容某些非标准 WebDAV 服务。是否需要启用它,应以你的服务端实际表现为准。

五、手动挂载测试

配置完成后,可以先进行手动挂载测试。以下以坚果云的 WebDAV 地址为例,有时需要在 URL 末尾加 /

sudo mount -t davfs https://dav.jianguoyun.com/dav /mnt/nutstore

如果配置正确,系统会提示输入凭据,或者自动读取 /etc/davfs2/secrets。成功后可以使用以下命令检查:

df -h | grep nutstore
ls /mnt/nutstore

如果能列出远程文件,说明挂载成功。

六、在 /etc/fstab 中自动挂载

如果希望开机自动挂载,或在执行 sudo mount -a 时自动挂载,可以在 /etc/fstab 中添加如下条目:

https://dav.jianguoyun.com/dav  /mnt/nutstore  davfs  rw,uid=1000,gid=1000,_netdev,users,credentials=/etc/davfs2/secrets  0  0

其中:

  • rw:以读写方式挂载。
  • uid=1000,gid=1000:指定挂载后文件的属主和属组,请根据实际用户 ID、组 ID 修改。
  • _netdev:表示这是一个网络文件系统,系统会在网络启动后再尝试挂载。
  • users:允许非 root 用户执行挂载和卸载。
  • credentials:指定存储 WebDAV 登录凭据的文件。

添加完毕后,使用:

sudo mount -a

进行测试。如果无报错且能正常访问 /mnt/nutstore,说明自动挂载已配置成功。

七、常见问题及解决方案

1. the server does not support WebDAV

  • 确认坚果云或其他服务端已开启 WebDAV 功能,并且 URL 正确,必要时尝试在末尾加 /
  • /etc/davfs2/davfs2.conf 中尝试添加 ignore_dav_header 1
  • 检查网络是否通畅,以及是否有防火墙或代理阻止访问。

2. 需要频繁输入用户名或密码

  • 确保 /etc/davfs2/secrets 已正确配置,并且权限设置为 600
  • 如果使用用户级配置,可以改在 ~/.davfs2/secrets 中保存凭据,并同样限制文件权限。

3. 权限问题

  • 挂载后若无法读写文件,检查 /etc/fstab 中的 uidgid 选项,或将用户添加到 davfs2 组。
  • 根据实际需求调整挂载点目录和本地缓存目录的权限。

4. 网络启动顺序

  • 使用 _netdev 选项可提示系统在网络就绪后再挂载。
  • 如果仍有启动顺序问题,可考虑使用 systemd 挂载单元,并设置 After=network-online.target 等依赖。

5. 替代方案

如果坚果云的 WebDAV 在你的环境中不兼容或不稳定,可以使用 rclone 等工具,通过其 WebDAV 支持进行挂载或同步。

八、总结

通过 davfs2,可以将坚果云(Nutstore)等支持 WebDAV 的云盘服务挂载到 Linux 本地,获得接近本地磁盘的文件操作体验。若遇到非标准 WebDAV 实现或连接问题,可尝试 ignore_dav_header 1,也可以使用其他工具(如 rclone)辅助挂载。

正确配置后,系统启动时可以自动加载远程存储,用户也可以随时访问、编辑和管理云端文件,无需手动登录网页或依赖额外的同步客户端。这对多平台文件管理、服务器远程办公等场景都很实用。

进一步阅读与参考:

Leave a Reply