前阵子我也开始将笔记同步的方案迁移到某果云(没办法真的香),于是跟某鼠一样,最近也开始折腾webdav但是折腾过程中发现不少坑,废了我不少时间现在终于琢磨出一套自认为比较完美的创建、挂载、同步webdav的方案。
windows下非常简单
创建,用chfs就能搞定
同步,我个人还是钟爱微力同步
挂载,用RaiDrive能映射webdav成驱动器
所有步骤都非常简单、人性
chfs: CuteHttpFileServer / chfs 文件服务器,简易nas,支持http、webdav - 讨论 - 小众软件官方论坛 (appinn.net)
接下来开始在linux环境下折腾(开始坑了)
首先是群晖dsm系统下
创建,用官方的webdav server套件就行,全部自带界面,非常友好。
同步,cloud sync里,添加,备份,计划任务,一气呵成毫无难点。
挂载,打开 file station>工具>远程连接>连接设置,就能选择webdav,非常简单,无脑。。。。但是,就是不能挂载坚果云。
再试试ubuntu,centos
创建,同样用chfs就能搞定(但是不知道为啥我这里chfs的cpu占用很高)
同步,依旧微力同步
挂载,我网上查到的教程都是用davfs2,查找过程中也找到了坚果云无法挂载的原因。
安装教程(这里都是用root账户运行的):
apt-get install neon -y ( centos用yum install neon -y )
apt-get install davfs2 -y
挂载
mkdir /mnt/webdav
mount -t davfs https://xxxx.xxxx.com /mnt/webdav
然后根据提示输入Username(用户名)& Password(密码)
取消挂载
fusermount -u ~/webdav
~/webdav为实际挂载的路径地址
davfs2 无法挂载坚果云的解决方案
vi /etc/davfs2/davfs2.conf
找到这行
#ignore_dav_header 0
去掉其注释符号,并且将后面的 0 改为 1,变成:
ignore_dav_header 1
然后ESC 再输入:wq 保存&退出,搞定。
坚果云的 WebDAV 服务器不支持 Class 1,修改之后可以使 davfs 跳过 Class 1 的验证,之后再进行挂载就不会有问题了。建议使用之前到坚果云网站,登录后点击[用户名]→账户信息→安全选项,在第三方应用管理中添加一个 davfs 专用的授权,使用时使用应用密码进行登录。
好了,一路最折腾完,最后才想起,有没有docker的一键解决方案?
找了一下。。。果然有=。=
docker创建webdav
docker run --name webdav \
--restart=unless-stopped \
-p 80:80 \
-v $HOME/docker/webdav:/media \
-e USERNAME=webdav \
-e PASSWORD=webdav \
-e TZ=Europe/Madrid \
-e UDI=1000 \
-e GID=1000 \
-d ugeek/webdav:amd64
时区可以设置成 -e TZ=Asia/Shanghai
dockerhub地址: ugeek/webdav (docker.com)
docker挂载webdav
docker run -itd \
--device /dev/fuse \
--cap-add SYS_ADMIN \
--security-opt "apparmor=unconfined" \
--env "WEBDRIVE_USERNAME=<YourUserName>" \
--env "WEBDRIVE_PASSWORD=<SuperSecretPassword>" \
--env "WEBDRIVE_URL=https://dav.box.com/dav" \
--env "DAVFS2_ASK_AUTH=0" \
-v /mnt/tmp:/mnt/webdrive:rshared \
efrecon/webdav-client
这里是把webdav挂载到容器内,并映射到宿主机的/mnt/tmp
/mnt/tmp可以根据自己需要修改成别的目录,容器关闭以后这个目录有时候会无法删除,重启宿主机就OK
dockerhub地址: efrecon/webdav-client (docker.com)
但是,这个项目依旧无法挂载坚果云,如果地址设置成坚果云,会发现容器创建后无法运行,解决方案也很简单,就是用已经修改过的davfs2.conf替换掉容器内的davfs2.conf文件
# davfs2 configuration file 2014-08-10
# version 12
# ------------------------------------
# Copyright (C) 2006, 2007, 2008, 2009, 2012, 2013, 2014 Werner Baumann
# Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice
# and this notice are preserved.
# Please read the davfs2.conf (5) man page for a description of the
# configuration options and syntax rules.
# Available options and default values
# ====================================
# General Options
# ---------------
# dav_user davfs2 # system wide config file only
# dav_group davfs2 # system wide config file only
# kernel_fs fuse
# buf_size 16 # KiByte
# WebDAV Related Options
# ----------------------
# use_proxy 1 # system wide config file only
# proxy # system wide config file only
# trust_ca_cert
# servercert # deprecated: use trust_ca_cert
# trust_server_cert
# clientcert
# secrets ~/.davfs2/secrets # user config file only
# ask_auth 1
# use_locks 1
# lock_owner <user-name>
# lock_timeout 1800 # seconds
# lock_refresh 60 # seconds
# use_expect100 0
# if_match_bug 0
# drop_weak_etags 0
# n_cookies 0
# precheck 1
ignore_dav_header 1
# use_compression 0
# min_propset 0
# follow_redirect 0
# server_charset
# connect_timeout 10 # seconds
# read_timeout 30 # seconds
# retry 30 # seconds
# max_retry 300 # seconds
# add_header
# Cache Related Options
# ---------------------
# backup_dir lost+found
# cache_dir /var/cache/davfs2 # system wide cache
# ~/.davfs2/cache # per user cache
# cache_size 50 # MiByte
# table_size 1024
# dir_refresh 60 # seconds
# file_refresh 1 # second
# delay_upload 10
# gui_optimize 0
# minimize_mem 0
# Debugging Options
# -----------------
# debug # possible values: config, kernel, cache, http, xml,
# httpauth, locks, ssl, httpbody, secrets, most
把上面这堆保存成davfs2.conf,扔到宿主机里,以防万一再给它权限
sudo chmod 777 davfs2.conf
docker cp davfs2.conf 容器ID:/etc/davfs2/
然后再启动容器,就能正常运行了。
同步
同步依旧还是微力同步,官方也给出了docker的安装方式
Docker 通用安装微力 · GitBook (verysync.com)
docker run --name verysync -d -v /path/you/dir:/data -p 8886:8886 jonnyan404/verysync
/path/you/dir
替换为你自己的目录(比如/opt或者/data等等)- 在 web 界面指定同步目录为
/data
即可下载数据到宿主机的/path/you/dir
目录. - 打开
http://IP:8886
即可访问.
变量
PORT
:自定义web管理页面端口
端口说明
3000
为默认公共中继端口22027/22037
为内网udp发现端口22330
数据传输端口8886
web管理端口
以 no-root 用户运行
在 docker run 命令后,追加 --user UID:GID
来指定运行用户和用户组.