Webdav 创建、挂载、同步的折腾笔记,一路栽坑

前阵子我也开始将笔记同步的方案迁移到某果云(没办法真的香),于是跟某鼠一样,最近也开始折腾webdav但是折腾过程中发现不少坑,废了我不少时间现在终于琢磨出一套自认为比较完美的创建、挂载、同步webdav的方案。

windows下非常简单

创建,用chfs就能搞定
同步,我个人还是钟爱微力同步
挂载,用RaiDrive能映射webdav成驱动器
所有步骤都非常简单、人性
chfs: CuteHttpFileServer / chfs 文件服务器,简易nas,支持http、webdav - 讨论 - 小众软件官方论坛 (appinn.net)

接下来开始在linux环境下折腾(开始坑了)

首先是群晖dsm系统下

创建,用官方的webdav server套件就行,全部自带界面,非常友好。
同步,cloud sync里,添加,备份,计划任务,一气呵成毫无难点。
挂载,打开 file station>工具>远程连接>连接设置,就能选择webdav,非常简单,无脑。。。。但是,就是不能挂载坚果云。 :joy: :joy: :joy:

再试试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 来指定运行用户和用户组.

1 Like


不是,假设,如果一个笔记软件,本身同步不是很易用,那为什么用这个笔记软件?
笔记随便记一下就好了,其实你在坚持写就不错了。
我觉得写笔记本身就应该是一个简单的事情,一般是记的多,回去看的少,时间浪费在同步,功能取舍之类的事情上本身有违写笔记的原则,因为大多笔记就自己看看,把一个简单的事情弄复杂干什么。

Joplin 支持使用多种网盘进行同步,所以它是同步,其实还是挺方便的。并且在电脑端 Ctrl+S 直接开始同步,就能够避免许多文件丢失的情况。

折腾主要是因为 webdav 还可以兼容许多其他的同步需求。有许多软件都支持这个协议的同步,然后在自己家里的服务器上开一个 webdav 就意味着可以享受到极速的同步体验。

然后关于笔记,记笔记是一个比较容易的事情,当很多人把笔记用成了摘抄本。其实相对于记笔记,更重要的是去整理笔记。就像把钱存进银行那只是数字,而利用他们盈利才是理财。

倒不是笔记本身同步不易用,只是我想要通过另一个设备给这个webdav做备份,加一层保险,于是就折腾出这么多 :rofl: :rofl: :rofl:
商业化的网盘个人感觉还是比较保险的,如果是自己部署的私有云那就是另一回事了,另外备份的时候还可以选择多版本备份,避免自己手贱。

又是这种软件吗……
因为我这边没什么数据交换,一般就是onenote和git,为什么我用不到呢?大概我避开了吧,又不是回不了家,可能只有视频制作的素材避不开,不过这个程度,网络应该也吃不消。其实大多东西都可以网页交互,计算不在本地。
至于整理笔记,那个又不能量化,数字也没有。

因为你记笔记不是本地还有一份的嘛?就是说,哪怕远端挂了,除非你本地机器也一起挂了,数据才回不来。
不过再备份一个,看你这么麻烦,还不如准备个u盘算了。

因为我的这个笔记没有回收站功能,然后自己又经常手贱
所以多开个备份端,做多版本备份 相当于有了回收站

我总觉得你是那种会作死的人,一般笔记又不会删除,哪怕一两行字,放着就放着,反正笔记的空间,这辈子也写不完。如果linux下面会更危险一些,最好是改掉个习惯。
其实如果习惯git的话,用git写也够了。我也不明白为什么这些软件有那么多人用,可能是开源吧。

确实是够用了。而且也非常灵活,这一直是我的备选方案之一。因为它本身就是版本管理,所以在历史记录方面绝对足够的强大,也不太用担心误删除。

那么为什么用软件呢?同步方便一点,移动端上使用也方便一点,书写方便一点(当然也可以用其他的软件,但就很难保证多端的体验一致),管理组织方便一点(当然用静态网站系统去进行笔记的管理也没问题,但在阅读的时候,如果发现一个错别字想修改就……

在这个选择上主要还是看自己更侧重于哪些个点

我现在用note,文件保存在固态移动硬盘中,公司,家里两不误,都可以打开。

其实压根不用管移动端,用移动端根本就是个半成品,打字非常不方便,如果要不显示虚拟键盘,就必须外接,显示虚拟键盘屏幕又小一半,如果我只要看的话,博客什么的也没什么区别。

我也不太明白用markdown之类的意义,我总觉得我写markdown像写html一样,那我不发布网上干什么,写在本地又不能发挥它的移植性,我也不打算频繁换写作软件,那这么想的话,还不如github之类的托管服务。

其实再往下想的话,本地客户端都显得多余,我就是写个markdown给自己看,打开一个浏览器就足够了,不管是用别人的服务还是自己的,压根用不到客户端。

再往下想,客户端除了onenote之类能自由写作的,大多没有意义,实现markdown的软件太多,远不止笔记软件。

之前我也有使用过 Joplin 啦,一开始用 Onedrive 同步,后来发现单个笔记文件大小超过 2MB 之后就会遇到同步问题,导致出错;后来换了坚果云,但是坚果云的 Webdav 接口有连接限制,新设备同步就很容易触发,导致后面同步失败;最后就是用 TeraCloud 没有上述问题,缺点就是速度慢……
现在我是用 Obisidian + Onedrive 作为日常笔记系统啦。

我让手机和电脑同步,电脑再定时备份到网盘,就解决许多问题

windows下,有个很简单的webdav,才不到10m. GitHub - hacdias/webdav: Simple Go WebDAV server.
具体用法就是解压出来以后,看readme.md.
我也是看到这位大哥的文章 Windows下配置WEBDAV服务 - zhuzb - 博客园
非常感谢