Seafile开启webdav及读写性能测试

一、seafile开启webdav的方法

编辑/data/haiwen/conf/seafdav.conf

添加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
[WEBDAV]

# Default is false. Change it to true to enable SeafDAV server.
enabled = true

port = 8080

# Change the value of fastcgi to true if fastcgi is to be used
fastcgi = false

# If you deploy seafdav behind nginx/apache, you need to modify "share_name".
share_name = /

然后重启seafile服务

1
./seafile.sh restart

linux系统挂载webdav的方法

比较直接的方法是使用mount命令,新建一个名为seafdav的文件夹

1
mount -t davfs http://127.0.0.1:8080/ /mnt/seafdav

挂载webdav后的读写性能测试

挂载webdav目录的写性能

1
2
3
4
root@localhost:/mnt/seafdav# dd if=/dev/zero bs=1024 count=1000000 of=1Gb.file
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 35.0303 s, 29.2 MB/s

挂载webdav目录的读性能

1
2
3
4
root@localhost:/mnt/seafdav# dd of=1Gb.file if=/dev/zero bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 35.0889 s, 29.2 MB/s

普通硬盘的写性能

1
2
3
4
root@localhost:/mnt/raid# dd if=/dev/zero bs=1024 count=1000000 of=1Gb.file
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 6.21764 s, 165 MB/s

普通硬盘的读性能

1
2
3
4
root@localhost:/mnt/raid# dd of=1Gb.file if=/dev/zero bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB, 977 MiB) copied, 13.546 s, 75.6 MB/s

结论

由以上数据可以看到,seafile所部署的webdav的读写性能确实差了一些,毕竟多了一些抽象,并且依赖cpu的处理速度,该NAS配置是J3455的CPU+8G内存,主打省电,但性能并不强。普通硬盘直接读写的速度是webdav的三倍左右。所以把webdav挂载为硬盘之后,只能进行一些硬盘负载较轻的工作。

二、挂载方法

2.1. Windows 平台

这里推荐使用一款名叫 RaiDrive 的软件,官网地址:www.raidrive.com,RaiDrive 是一款免费的软件,不仅支持 WebDAV 协议,还支持常见的 SFTP、FTP 协议,以及 Google Drive、OneDrive、Dropbox、Nextcloud 等常见网盘的挂载。

进入软件后,点击右上角的添加

img

在服务类型中选择 NAS,再选择 WebDAV,虚拟驱动器中可以自定义一个未占用的盘符和名称,地址中输入 WebDAV 的地址和路径,最后在账户中输入用户名和密码,点击小箭头就完成挂载了。

200320-2

最后,打开此电脑,就可以访问网络位置的 WebDAV 了。

200320-3

建议在软件的设置中勾选添加到启动项,可以在 Windows 开机后自动挂载,如果你的 WebDAV 服务器位于国外,下载速度缓慢,还可以在设置中添加代理,并且为挂载的 WebDAV 勾选代理选项。

2.2. Android 平台挂载

因为大部分 Android 手机自带的文件管理器都不支持挂载 WebDAV,所以这里借助第三方文件管理器:ES 文件浏览器来实现该功能,该软件同 RaiDrive 一样,也支持常见协议及网盘的连接。

首先在软件侧栏的网络中选择 FTP,然后点击新建,选择 WebDAV,服务器填写 WebDAV 服务器的 URI,加密协议根据自己情况而定,输入 WebDAV 的用户名和密码,即可完成挂载。

2.3. Linux 平台挂载

首先安装 davfs2

复制

1
2
3
4
5
6
#CentOS/RedHat
sudo yum install -y davfs2
#ubuntu/debian
sudo apt-get install -y davfs2
#Arch/Manjaro
sudo pacman -Sy davfs2

挂载 WebDAV

复制

1
mount -t davfs https://xxxxxx /mnt/webdav

接下来需要输入 WebDAV 的用户名和密码,即可完成挂载

如果想要开机自动挂载 WebDAV,并且自动输入用户名和密码,需要将 /etc/davfs2/davfs2.conf 中的 use_lock 解除注释,并将值修改为 0

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

接下来在 /etc/davfs2/secrets 末尾添加 WebDAV地址 用户名 密码

1
2
echo "https://nextcloud.example.com/remote.php/webdav/ milosz mypassword" >> /etc/davfs2/secrets #保存用户名密码,以后可以直接免密码挂载
mount.davfs 你的WebDAV地址 你想要挂载到的目录

最后在 /etc/fstab 末尾添加 WebDAV地址 /mnt/webdav davfs defaults 0 0

1
echo "mount.davfs 你的WebDAV地址 你想要挂载到的目录" >> /etc/rc.local

当然,如果你是 kde 用户的话,可以在自带的文件管理器 Dolphin 中选择网络,输入 WebDAV 的地址,用户名,密码等选项完成 WebDAV 的挂载,不过,这种方法的缺点是只能通过 Dolphin 进行访问,而不能在命令行中通过具体地址访问。

以上就是多平台挂载 WebDAV 的具体方法,由于手上没有 IOS 和 MacOS 设备,暂无相关说明。

三、简介

什么是webdav,是一组基于超文本传输协议的技术集合,有利于用户间协同编辑和管理存储在万维网服务器文档。国外的很多网盘,包括owncloud都支持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,也可以自己编译,需要准备好环境。

1
2
3
4
5
6
7
8
9
apt-get install davfs2
mkdir /mnt/webdav
mount -t davfs https://webdav.yandex.ru /mnt/webdav
Please enter the username to authenticate with server
https://webdav.yandex.ru or hit enter for none.
Username: test
Please enter the password to authenticate user test with server
https://webdav.yandex.ru or hit enter for none.
Password:

配置

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

1
usermod -a -G network username

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

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

创建账号密码配置:

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

yandex url是:

1
https://webdav.yandex.ru

如果是owncloud, url是:

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

多用户配置

1
2
3
4
/home/username/disk1 webdavuser1 "webdavpassword1"
/home/username/disk2 webdavuser1 "webdavpassword2"
.........
/home/username/diskN webdavuserN "webdavpasswordN"

Now you should be able to mount and unmount ~/webdav:

1
mount ~/webdav

取消挂载

1
fusermount -u ~/webdav

错误

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

1
2
3
[...]
use_locks 0
[...]