habr.png
habr.png

简介

什么是webdav,是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。国外的很多网盘,包括owncloudnextcloud、坚果云等都支持webdav,本文以yandex为例子介绍,挂载在Linux上。

介绍

Linux

  • davfs2或者fusedavWebDAV共享挂载成Coda或者FUSE文件系统。
  • KDEWebDAV作为kio_http的一部分提供原生支持。DolphinKonqueror等其他KDE应用程序可以直接与WebDAV服务器交互。
  • Nautilus也提供内置支持。
  • cadaver命令行工具提供类FTP命令集,也包含在很多Linux发行版中。
  • Apache HTTP服务 提供基于davfsApache SubversionWebDAV模块。

Windows

  • NetDrive:挂载为网络硬盘机

Mac

  • Finder:系统内置程式

本文就是利用davfs2挂载wendav

安装

Linux主要的源中都有davfs2,也可以自己编译,需要准备好环境。

Debian / Ubuntu:

#安装依赖
apt-get install neon -y  
#安装davfs2 
apt-get install davfs2 -y 

#挂载   
mkdir /mnt/webdav
mount -t davfs https://webdav.yandex.ru /mnt/webdav

RHCL / CentOS / Fedora:

#安装依赖
yum install neon -y
#安装davfs2
apt-get install davfs2 -y 

#挂载   
mkdir /mnt/webdav
mount -t davfs https://webdav.yandex.ru /mnt/webdav

然后根据提示输入Username(用户名)& Password(密码)挂载即可。

配置

可以把账号密码写入配置文件,以普通用户来挂载。

usermod -a -G network username

编辑/etc/fstab文件,在后面添加(username自己替换):

https://webdav.example.com /home/username/webdav davfs user,noauto,uid=username,file_mode=600,dir_mode=700 0 1

创建账号密码配置:

mkdir ~/.davfs2/
echo "https://webdav.example.com webdavuser webdavpassword" >> ~/.davfs2/secrets 
chmod 0600 ~/.davfs2/secrets

yandex url是:

https://webdav.yandex.ru

如果是owncloud, url是:

https://webdav.example.com/remote.php/webdav

多用户配置

/home/username/disk1 webdavuser1 "webdavpassword1"
/home/username/disk2 webdavuser1 "webdavpassword2"
.........
/home/username/diskN webdavuserN "webdavpasswordN"

关于挂载和取消挂载:

#挂载
mount ~/webdav

#取消挂载
fusermount -u ~/webdav

注意,上面的~/webdav为实际挂载的路径地址

错误

1)如果在复制剪切文件遇到错误,编辑/etc/davfs2/davfs2.conf,修改配置如下,

[...]
use_locks 0
[...]

或者可以直接使用sed命令修改系统设置:

sed -i 's/# use_locks       1/use_locks       0/g' /etc/davfs2/davfs2.conf

2)如果遇到挂载盘后无法卸载盘,提示报错 Device or resource busy. 或者 device is busy. 的情况,可以使用下面的解决办法:

<方法1>

如果万幸没有加入开机自动挂载,那么可以使用重启大法。

<方法2>

使用lsof +d 命令找到占用目录的进程的PID,再使用kill命令杀死进程即可。

 # 运行命令查找目录占用的进程
 $ lsof +d <挂载路径>
 
 # 使用kill命令杀死进程
 $ kill -9 <PID>

参考