WebDAV概述、原理、拓展:SMB、ZeroByte

概述

官网,Web-based Distributed Authoring and Versioning缩写,基于Web的分布式编写与版本管理,GitHub,一种基于HTTP协议的扩展,允许用户通过互联网来管理远程服务器上的文件,可执行文件复制、移动、删除、创建等操作。还支持文件锁定机制,以防止多人同时编辑导致丢失更新的问题。已被广泛应用于多用户协作编辑和文件存储同步。

相关RFC协议:

设计目标

目标 说明
资源创建 在服务器上创建新文件/目录
资源修改 上传、覆盖、修改服务器文件
资源删除 删除服务器上的文件/目录
资源复制/移动 COPY、MOVE操作
属性管理 读取/设置文件的元数据(创建时间、作者等)
锁定机制 防止多用户同时编辑造成冲突(Lock/Unlock)
集合操作 批量处理(MKCOL创建集合/目录)

主要功能

  • 文件管理:通过新增HTTP方法,可在远程服务器上执行文件和目录的创建、删除、复制和移动等基本操作;
  • 元数据处理:用户可创建、查询和修改文件的元数据(如作者、创建日期等);
  • 资源锁定:通过LOCK和UNLOCK方法,可以实现对文档的互斥锁或共享锁,避免多人同时修改的冲突;
  • 跨平台兼容:支持多种操作系统和应用,例如Windows文件资源管理器(通过映射网络驱动器)、MacOS Finder、Linux文件浏览器以及许多第三方应用(如Zotero、Notability、WPS等);
  • 安全优势:与FTP等传统协议相比,可利用HTTP/HTTPS的安全特性,并使用单一TCP端口进行通信,从而提供更灵活的安全选项。

工作原理

  • WebDAV服务器:运行在服务器端,负责响应客户端的连接和读写请求;
  • WebDAV客户端:运行在用户设备上的程序,可以是操作系统内置的功能,也可以是第三方应用,用于连接和操作WebDAV服务器上的文件。

HTTP拓展

WebDAV在标准HTTP方法基础上,扩展以下8个新方法:

方法 说明 类比文件系统操作
PROPFIND 查询资源属性(文件名、大小、创建时间等) ls/stat
PROPPATCH 批量修改资源属性 chmod/touch
MKCOL 创建集合(目录) mkdir
DELETE 删除资源或集合 rm -r
COPY 复制资源到目标位置 cp
MOVE 移动/重命名资源 mv
LOCK 对资源加锁 文件锁
UNLOCK 解锁资源 文件解锁

WebDAV引入一组多状态响应码:

状态码 含义 说明
102 Processing 处理中 扩展状态码,请求正在处理
207 Multi-Status 多重状态 返回多个资源的状态(PROPFIND使用)
422 Unprocessable Entity 无法处理 请求格式正确但语义错误
423 Locked 资源已锁定 无法修改已锁定的资源
424 Failed Dependency 依赖失败 操作依赖的其他操作失败
507 Insufficient Storage 存储不足 服务器存储空间不足

原理

WebDAV的请求和响应大量使用XML格式进行结构化数据传输,PROPFIND请求与响应:

xml 复制代码
PROPFIND /docs/ HTTP/1.1
Host: example.com
Depth: 1
Authorization: Basic dXNlcjpwYXNz
Content-Type: application/xml; charset="utf-8"

<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:">
	<D:prop>
		<D:displayname/>
		<D:getcontentlength/>
		<D:getlastmodified/>
		<D:resourcetype/>
		<D:creationdate/>
	</D:prop>
</D:propfind>

响应:

xml 复制代码
HTTP/1.1 207 Multi-Status
Content-Type: application/xml; charset="utf-8"

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
  <D:response>
    <D:href>/documents/</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname>Documents</D:displayname>
        <D:resourcetype><D:collection/></D:resourcetype>
        <D:creationdate>2024-01-01T00:00:00Z</D:creationdate>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
  <D:response>
    <D:href>/documents/report.pdf</D:href>
    <D:propstat>
      <D:prop>
        <D:displayname>report.pdf</D:displayname>
        <D:getcontentlength>1048576</D:getcontentlength>
        <D:getlastmodified>Mon, 01 Jan 2024 12:00:00 GMT</D:getlastmodified>
        <D:resourcetype/>
        <D:creationdate>2024-01-01T08:00:00Z</D:creationdate>
      </D:prop>
      <D:status>HTTP/1.1 200 OK</D:status>
    </D:propstat>
  </D:response>
</D:multistatus>

Locking,锁定机制,解决多用户同时编辑同一文件的冲突问题:
用户 B 用户 A 用户 B 用户 A #mermaid-svg-LLkDyk1jRTrdWO0M{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-LLkDyk1jRTrdWO0M .error-icon{fill:#552222;}#mermaid-svg-LLkDyk1jRTrdWO0M .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-LLkDyk1jRTrdWO0M .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-LLkDyk1jRTrdWO0M .marker{fill:#333333;stroke:#333333;}#mermaid-svg-LLkDyk1jRTrdWO0M .marker.cross{stroke:#333333;}#mermaid-svg-LLkDyk1jRTrdWO0M svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-LLkDyk1jRTrdWO0M p{margin:0;}#mermaid-svg-LLkDyk1jRTrdWO0M .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-LLkDyk1jRTrdWO0M text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-LLkDyk1jRTrdWO0M .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-LLkDyk1jRTrdWO0M .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-LLkDyk1jRTrdWO0M .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-LLkDyk1jRTrdWO0M .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-LLkDyk1jRTrdWO0M #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-LLkDyk1jRTrdWO0M .sequenceNumber{fill:white;}#mermaid-svg-LLkDyk1jRTrdWO0M #sequencenumber{fill:#333;}#mermaid-svg-LLkDyk1jRTrdWO0M #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-LLkDyk1jRTrdWO0M .messageText{fill:#333;stroke:none;}#mermaid-svg-LLkDyk1jRTrdWO0M .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-LLkDyk1jRTrdWO0M .labelText,#mermaid-svg-LLkDyk1jRTrdWO0M .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-LLkDyk1jRTrdWO0M .loopText,#mermaid-svg-LLkDyk1jRTrdWO0M .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-LLkDyk1jRTrdWO0M .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-LLkDyk1jRTrdWO0M .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-LLkDyk1jRTrdWO0M .noteText,#mermaid-svg-LLkDyk1jRTrdWO0M .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-LLkDyk1jRTrdWO0M .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-LLkDyk1jRTrdWO0M .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-LLkDyk1jRTrdWO0M .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-LLkDyk1jRTrdWO0M .actorPopupMenu{position:absolute;}#mermaid-svg-LLkDyk1jRTrdWO0M .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-LLkDyk1jRTrdWO0M .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-LLkDyk1jRTrdWO0M .actor-man circle,#mermaid-svg-LLkDyk1jRTrdWO0M line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-LLkDyk1jRTrdWO0M :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 锁定文件 返回令牌 正在编辑 report.doc... 等待... 上传修改 成功 解锁 完成 文件已更新,版本同步 LOCK report.doc Lock-Token PUT report.doc 200 OK UNLOCK 204 No Content

支持两种锁类型

  • 独占锁:Exclusive,同一时间只有一个用户能编辑
  • 共享锁:Shared,允许多个用户同时编辑

RFC 3744定义WebDAV的访问控制列表(ACL)机制:

xml 复制代码
<D:acl>
  <D:ace>
    <D:principal>
      <D:href>/principals/users/alice/</D:href>
    </D:principal>
    <D:grant>
      <D:privilege><D:read/></D:privilege>
      <D:privilege><D:write/></D:privilege>
    </D:grant>
  </D:ace>
  <D:ace>
    <D:principal>
      <D:authenticated/>
    </D:principal>
    <D:grant>
      <D:privilege><D:read/></D:privilege>
    </D:grant>
  </D:ace>
</D:acl>

每个WebDAV资源都有一套关联的属性:

  • DAV:命名空间的死属性:存储在服务器端,不可被服务器解释
属性 说明
getcontentlength 文件大小
getlastmodified 最后修改时间
resourcetype 资源类型(文件/集合)
displayname 显示名称
creationdate 创建日期
getcontenttype MIME类型
getetag 实体标签(用于缓存)
  • 活属性:由服务器动态计算和维护
    • 服务器根据资源内容动态计算,如getcontentlength
    • 每次资源修改后自动更新

完整操作时序图
WebDAV Server Client WebDAV Server Client #mermaid-svg-kndvU4owe0mpheh4{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-kndvU4owe0mpheh4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-kndvU4owe0mpheh4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-kndvU4owe0mpheh4 .error-icon{fill:#552222;}#mermaid-svg-kndvU4owe0mpheh4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-kndvU4owe0mpheh4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-kndvU4owe0mpheh4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-kndvU4owe0mpheh4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-kndvU4owe0mpheh4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-kndvU4owe0mpheh4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-kndvU4owe0mpheh4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-kndvU4owe0mpheh4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-kndvU4owe0mpheh4 .marker.cross{stroke:#333333;}#mermaid-svg-kndvU4owe0mpheh4 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-kndvU4owe0mpheh4 p{margin:0;}#mermaid-svg-kndvU4owe0mpheh4 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-kndvU4owe0mpheh4 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-kndvU4owe0mpheh4 .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-kndvU4owe0mpheh4 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-kndvU4owe0mpheh4 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-kndvU4owe0mpheh4 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-kndvU4owe0mpheh4 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-kndvU4owe0mpheh4 .sequenceNumber{fill:white;}#mermaid-svg-kndvU4owe0mpheh4 #sequencenumber{fill:#333;}#mermaid-svg-kndvU4owe0mpheh4 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-kndvU4owe0mpheh4 .messageText{fill:#333;stroke:none;}#mermaid-svg-kndvU4owe0mpheh4 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-kndvU4owe0mpheh4 .labelText,#mermaid-svg-kndvU4owe0mpheh4 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-kndvU4owe0mpheh4 .loopText,#mermaid-svg-kndvU4owe0mpheh4 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-kndvU4owe0mpheh4 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-kndvU4owe0mpheh4 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-kndvU4owe0mpheh4 .noteText,#mermaid-svg-kndvU4owe0mpheh4 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-kndvU4owe0mpheh4 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-kndvU4owe0mpheh4 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-kndvU4owe0mpheh4 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-kndvU4owe0mpheh4 .actorPopupMenu{position:absolute;}#mermaid-svg-kndvU4owe0mpheh4 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-kndvU4owe0mpheh4 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-kndvU4owe0mpheh4 .actor-man circle,#mermaid-svg-kndvU4owe0mpheh4 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-kndvU4owe0mpheh4 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 编辑文件... OPTIONS / HTTP/1.1 (查询服务器能力) 200 OK (DAV: 1, 2) PROPFIND /docs/ (Depth: 1, 浏览目录) 207 Multi-Status (XML: 文件列表和属性) MKCOL /docs/md/ (创建目录) 201 Created (Location: /docs/md/) PUT /docs/md/readme.md (上传文件) 201 Created LOCK /docs/md/readme.md(锁定文件) 200 OK (Lock-Token: urn:uuid:xxx) PUT /docs/md/readme.md(更新文件, If: <urn:uuid:xxx>) 204 No Content UNLOCK /docs/md/readme.md(解锁) 204 No Content COPY /docs/md/ (复制目录,Destination: /docs/md_bak/) 201 Created MOVE /docs/md/ (重命名目录, Destination: /docs/project_v2/) 201 Created DELETE /docs/project_v2/ (删除目录) 204 No Content

应用

应用场景

  • 远程文件管理:像访问本地硬盘一样管理云存储上的文件;
  • 多人协同编辑:允许多个用户在同一个文档上进行协作;
  • 数据同步:支持将特定应用的数据(如笔记、文献库等)同步到远程WebDAV服务器上。

支持WebDAV的网盘:

  • 国外:Box、Dropbox、teracloud、yandex、TransIP...
  • 国内:坚果云、阿里云盘、123云盘...
  • 私有云:OwnCloud、Seafile、Synology...

某度网盘并不支持WebDAV。

支持WebDAV的应用

  • Zotero:一款文献管理工具
  • PDF Expert:PDF文件阅读工具,使用WebDAV可以直接阅读网盘中的pdf文件
  • 格志日记:手机日记记录app,可以通过WebDAV同步数据
  • 一本日记:同上
  • Notability:iPad上的手写笔记软件,可通过WebDAV导出数据
  • WPS:可通过WebDAV访问网盘的办公文档
  • 纯纯写作:支持Markdown的写作软件
  • Solid Explorer、ES文件管理器:支持WebDAV的手机文件管理器
  • joplin:支持全平台的Markdown编辑器
  • keepass:支持WebDAV的密码管理器
  • 专注笔记:支持全平台强化编辑功能的的笔记软件
  • Tampermonkey:使用WebDAV同步油猴脚本
  • Enpass:知名的全平台密码管理应用
  • 沙拉词典:浏览器插件,支持多种翻译引擎,WebDAV同步生词本
  • 静读天下:支持多种电子书籍格式的阅读软件
  • Floccus:解决不同浏览器书签同步
  • 麻雀记:一款功能丰富的个人笔记应用,可以使用看板,标签以及四象等功能来实现多类型笔记记录
  • 薄荷记账:一款支持WebDAV同步的记账软件
  • 那样记账:同上
  • MWeb:专业Markdown写作软件
  • 卡片日记:以卡片为概念的日记应用
  • 书伴:一款支持OCR文本识别功能的书籍管理应用
  • Nova Launcher:经典Android桌面启动应用
  • Documents:iOS平台支持WebDAV的文件管理工具

协议扩展

WebDAV有两大重要扩展标准,广泛用于日历和联系人同步。

CalDAV

参考RFC 4791,基于WebDAV的日历扩展协议,允许客户端通过HTTP访问、管理和同步远程服务器上的日历数据,并使用iCalendar格式存储事件信息。支持多用户共享、搜索和跨设备同步,常用于Apple Calendar、Thunderbird、Google Calendar等应用。

核心HTTP方法

  • OPTIONS:查询服务器支持的功能
  • PROPFIND:获取资源及属性(如ctagsynctoken
  • REPORT:批量获取资源详情或增量数据
  • PROPPATCH:修改或删除资源属性
  • PUT:创建或更新日历事件
  • MKCALENDAR:创建日历集合(部分服务不支持)
  • DELETE:删除日历或事件

同步机制

  • 全量同步:PROPFIND获取所有事件的href和etag,再用REPORT拉取详情
  • 增量同步:利用ctag判断日历集合是否变化,变化时用synctoken+REPORT拉取更新
  • etag:标识单个事件唯一性
  • ctag:标识日历集合变化
  • synctoken:支持增量同步的游标

Google CalDAV特性

  • 支持GET、PUT、DELETE、PROPFIND、PROPPATCH、REPORT等
  • 不支持MKCALENDAR、VTODO、VJOURNAL、忙闲查询
  • 连接需HTTPS+OAuth 2.0认证

部分客户端

兼容客户端 说明
macOS日历 原生支持CalDAV
iOS日历 原生支持CalDAV
Thunderbird Lightning 插件支持
Evolution(Linux) 原生支持
Google Calendar 部分支持(通过GData API)
Microsoft Outlook 需第三方插件

CardDAV

参考RFC 6352,旨在提供一个开放、标准化的方式来管理个人和共享的地址簿数据,存储vCard格式联系人信息。

协议对比矩阵

维度 WebDAV SFTP FTP/S NFS SMB/CIFS
协议基础 HTTP SSH FTP TCP/IP SMB
默认端口 80/443 22 21/990 2049 445/139
穿越防火墙 ✅极易 ⚠️需开放22 ⚠️多端口 ❌困难 ⚠️困难
加密传输 HTTPS(TLS) 内置SSH FTPS/TLS ❌/SSH SMB3加密
文件锁定 ✅LOCK/UNLOCK ✅SMBLock
属性管理 ✅PROPFIND ⚠️基础 ⚠️基础 ⚠️基础
目录列举 ✅PROPFIND
目录操作 ✅MKCOL ⚠️有限
版本控制 ⚠️DeltaV扩展
Web直连 ✅浏览器可访问
原生系统支持 macOS/Windows Linux/macOS 全平台 Linux/Unix 全平台
速度 中等 中等 中等 最快
NAT友好 ⚠️

SMB

Server Message Block,服务器消息块,一种网络协议,用于在计算机之间共享文件、打印机、串口等资源。最初由IBM的贝瑞·费根鲍姆(Barry Feigenbaum)开发,旨在将DOS操作系统中的本地文件接口改造为网络文件系统。

通过SMB协议,客户端应用程序可在各种网络环境下读写服务器上的文件,并对服务器程序提出服务请求。应用程序还可访问远程服务器端的文件、打印机、邮件槽和命名管道等资源。

SMB协议最初设计在NetBIOS协议上运行,而NetBIOS本身则运行在NetBEUI、IPX/SPX或TCP/IP协议上。微软对SMB协议进行多次改进,1996年,微软将SMB改名为CIFS(Common Internet File System,通用互联网文件系统),并加入许多新功能,如符号链接、硬链接和提高文件大小等。

SMB协议有多个版本:

  • SMB 1.0:最初版本,存在传输效率低和传输空间小等缺陷;
  • SMB 2.0:在1.0基础上改进文件传输效率、文件缓存空间和文件并发传输等问题;
  • SMB 3.0:在Windows Server 2012和Windows 8中引入,极大提升性能、可靠性和安全性。

目前最常用的局域网共享协议。

NFS

Network File System,一种分布式文件系统协议,目前主要应用于Linux系统服务。

ZeroByte

官网,开源(GitHub,6.5K Star,165 Fork)自动化备份工具,基于Restic构建,支持跨多个存储后端保存数据。提供现代化的Web界面,用于安排、管理和监控远程存储的加密备份; 支持从NFS、SMB、WebDAV或本地目录等方式进行备份。

实战

bash 复制代码
modprobe fuse

把FUSE功能所需的内核模块加载进内存,使系统支持FUSE文件系统。

基于Docker Compose部署,docker-compose.yaml示例:

yaml 复制代码
services:
  zerobyte:
    image: ghcr.io/nicotsx/zerobyte:v0.22
    container_name: zerobyte
    restart: unless-stopped
    cap_add:
      - SYS_ADMIN
    ports:
      - "4096:4096"
    devices:
      - /dev/fuse:/dev/fuse
    environment:
      - TZ=Asia/Shanghai# Set your timezone here
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/lib/zerobyte:/var/lib/zerobyte
      - ~/.config/rclone:/root/.config/rclone
      - /backup/zerobyte:/mydata

rclone.conf配置文件示例:

conf 复制代码
[m4webdav]
type = webdav
url = http://192.168.31.222:25000
vendor = rclone

RaiDrive

目前在国内支持WebDAV的网盘非常非常少,懂得都懂。可通过自建网盘,实现WebDAV服务。

将支持WebDAV网盘映射为本地磁盘的工具,轻松地在本地安装FTP、WebDAV、OneDrive、Dropbox和其他网络磁盘,并将其转换为本地硬盘使用。通过RaiDrive,可更好地利用支持WebDAV的网盘,或将常见的网络硬盘映射到本地磁盘上来使用。

相关推荐
袁小皮皮不皮20 小时前
1.HCIP BFD 学习笔记(优化版)
服务器·网络·笔记·网络协议·学习·智能路由器·ip
用户0312959133421 天前
第 10 篇:路由表:数据包的导航仪
网络协议
mmmayang1 天前
基于 QUIC 的 HTTP_3
网络·网络协议·http
北京耐用通信1 天前
国产化替代优选!耐达讯自动化NY-HUB6完美兼容替代PB-HUB6\GL
人工智能·科技·网络协议·自动化·信息与通信
大草原的小灰灰1 天前
TCP/IP协议栈传输层介绍
网络协议·tcp/ip
IT大白鼠1 天前
IPv6过渡技术:原理、分类与应用
网络·网络协议·华为
我是一颗柠檬1 天前
【计算机网络全面教学】网络层与IP协议,子网划分到路由协议全掌握Day3(2026年)
网络协议·tcp/ip·计算机网络
袁小皮皮不皮1 天前
2.HCIP OSPF路由基础(优化版)
运维·服务器·网络·网络协议·智能路由器
普马萨特1 天前
Wi-Fi 扫描频率多层限制机制解析
网络协议·安卓
阿米亚波1 天前
SSH+TCP流程及抓包说明
网络·笔记·网络协议·tcp/ip·计算机网络·wireshark·ssh