跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

WebDAV + Rclone:安全约束下的跨平台文件传输实践

公司安全策略禁止 OpenSSH 后,尝试 NFS/SMB 等方案未果,最终采用 WebDAV + Rclone 实现跨平台文件传输。通过 Apache 配置 Windows/macOS 上的 WebDAV 服务端,并在客户端使用 Rclone 进行稳定读写,配置包括解除大文件限制、防火墙放行等。该方案轻量、符合规范,适用于内部工具场景。

霸天发布于 2026/6/15更新于 2026/9/938 浏览

在集成流水线时,遇到一个场景:服务器需要和其他平台交换文件。最简单直接的方式是 scp/sftp,但公司安全策略禁掉了机器间的 OpenSSH 访问。试过 NFS、SMB、临时搭个 HTTP 共享,要么同样被安全策略挡掉,要么配置太繁琐。最后选定了 WebDAV + Rclone 的组合:

  • 在目标机器上用 Apache 开 WebDAV 共享目录
  • 在需要操作的机器上通过 Rclone 读写这个共享目录

这套方案属于内部工具级别,不是生产环境部署。实际使用中,我拿一台测试机(macOS 或 Windows)跑 WebDAV 服务,另一台 macOS 服务器用 Rclone 进行文件的上传、下载,稳定且轻量,也符合公司的安全要求。

在 Windows 上搭建 Apache + WebDAV

Windows 下需要自己安装 Apache,macOS 自带,只需要启用相关模块。下面主要记 Windows 的步骤,macOS 操作类似,但共享目录最好放在 Shared 文件夹下。不设账号密码,允许匿名登录;要加认证的话改对应配置就好。

Apache 安装与基本配置

从 Apache Lounge 下载对应系统的压缩包,解压到一个无空格、无中文的目录,比如 D:\Apache。

打开 D:\Apache\Apache24\conf\httpd.conf,做几处修改:

# 修改 ServerRoot,必须与解压路径一致
Define SRVROOT "D:/Apache/Apache24"
ServerRoot "${SRVROOT}"
# 改端口,避免冲突(比如 8080)
Listen 8080
# 末尾添加 ServerName,端口对应
ServerName 127.0.0.1:8080

管理员 cmd 里测试配置:

cd /d D:\Apache\Apache24\bin
httpd -t
# -> Syntax OK

启动 Apache:

httpd -k start
# 或者注册为 Windows 服务,开机自启
httpd -k install
net start Apache2.4

浏览器访问 http://localhost:8080,看到 'It works!' 就说明 Apache 跑起来了。

修改配置后需要重启:

httpd -t          # 检查语法
httpd -k restart  # 重启
# 或者服务方式
net stop Apache2.4
httpd -t
net start Apache2.4

启用 WebDAV 模块

在 httpd.conf 里去掉下面几行前面的 #:

LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_lock_module modules/mod_dav_lock.so
# 以下用于密码认证(本场景未用,但先开着无妨)
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authz_core_module modules/mod_authz_core.so

创建共享目录与锁文件路径

管理员 cmd:

mkdir D:\webdav_share
mkdir D:\Apache\Apache24\var

webdav_share 是实际共享的文件夹,var 对应 WebDAV 锁数据库路径。

D 盘一般不用单独设置权限;如果不是 D 盘,右键 webdav_share → 属性 → 安全,添加 Everyone 并赋予完全控制。如果 Apache 以服务运行,还要给 或 服务账户同样权限。

SYSTEM
Apache2.4

编写独立的 WebDAV 配置

在 D:\Apache\Apache24\conf 下新建 extra 文件夹(如果不存在),进入后创建 httpd-webdav.conf:

cd /d D:\Apache\Apache24\conf
if not exist "extra" mkdir extra
cd extra
type nul > httpd-webdav.conf
notepad httpd-webdav.conf

写入以下内容:

Define SRVROOT "D:/Apache/Apache24"
DavLockDB "${SRVROOT}/var/DavLock"
Alias /webdav "D:/webdav_share"
<Directory "D:/webdav_share">
    Dav On
    DavDepthInfinity On
    DavMinTimeout 600
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Require all granted
</Directory>

为了让 WebDAV 支持大文件传输(超过几百 MB),需要解除 Apache 的请求体大小和分块限制。在上面配置里追加:

# 1. 解除请求体大小限制(0 = 无限制,单位:字节)
LimitRequestBody 0
# 2. WebDAV 专属:解除请求大小限制(无上限)
DavMaxRequestSize 0
# 3. 延长超时时间(避免大文件传输超时,单位:秒)
TimeOut 3600
# 4. 关闭分块传输限制(兼容旧客户端)
EnableSendfile Off
EnableMMAP Off

最后,在 httpd.conf 末尾引入这个配置文件:

Include conf/extra/httpd-webdav.conf

检查语法并重启:

httpd -t
httpd -k restart
# 或
net stop Apache2.4
httpd -t
net start Apache2.4

浏览器访问 http://localhost:8080/webdav,能看到共享目录内容就算成功。

防火墙放行

从其他机器访问需要放行端口:

:: 永久允许 TCP 8080 入站
netsh advfirewall firewall add rule name="WebDAV-8080" dir=in action=allow protocol=TCP localport=8080 remoteip=any profile=any enable=yes
:: 删除规则(需要时)
netsh advfirewall firewall delete rule name="WebDAV-8080" protocol=TCP localport=8080

在另一台机器上访问 http://<ipv4>:8080/webdav 验证。

Rclone 客户端配置

安装

macOS(推荐用 Homebrew):

# 如果没有 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install rclone
rclone version

Windows(管理员 PowerShell):

winget install Rclone.Rclone

连接 WebDAV

运行 rclone config,按照向导操作:

  • 选 n 新建远程,起个名字(比如 webdav)
  • 存储类型选 WebDAV(输入数字或全名)
  • URL 填 http://192.168.1.100/webdav(换成实际 IP)
  • Vendor 选 Other(通常是 7)
  • 用户名和密码留空(如果没设认证)
  • 确认后 q 退出

常用命令

# 列出远程文件
rclone ls webdav:/
# 上传文件(copy 会保持源端元数据)
rclone copy local_file.txt webdav:/path/

Rclone 的上传下载都很稳定,对大文件的支持也经过前面配置的调整,从几百兆到几 GB 都能跑。整套方案搭起来不算复杂,日常使用一个脚本就能搞定文件交换,不用开一堆临时服务。

目录

  1. 在 Windows 上搭建 Apache + WebDAV
  2. Apache 安装与基本配置
  3. 修改 ServerRoot,必须与解压路径一致
  4. 改端口,避免冲突(比如 8080)
  5. 末尾添加 ServerName,端口对应
  6. -> Syntax OK
  7. 或者注册为 Windows 服务,开机自启
  8. 或者服务方式
  9. 启用 WebDAV 模块
  10. 以下用于密码认证(本场景未用,但先开着无妨)
  11. 创建共享目录与锁文件路径
  12. 编写独立的 WebDAV 配置
  13. 1. 解除请求体大小限制(0 = 无限制,单位:字节)
  14. 2. WebDAV 专属:解除请求大小限制(无上限)
  15. 3. 延长超时时间(避免大文件传输超时,单位:秒)
  16. 4. 关闭分块传输限制(兼容旧客户端)
  17. 或
  18. 防火墙放行
  19. Rclone 客户端配置
  20. 安装
  21. 如果没有 Homebrew
  22. 连接 WebDAV
  23. 常用命令
  24. 列出远程文件
  25. 上传文件(copy 会保持源端元数据)

更多推荐文章

查看全部
  • 使用 Gitee AI Serverless API 与 Cursor 搭建 DeepSeek 对话应用
  • Docker 部署 Music-Tag-Web 音乐标签编辑工具
  • AI 辅助编译部署鸿蒙应用:harmonyos-build-deploy Skill
  • Spring Web MVC 入门:注解用法、参数传递与 Postman 测试
  • RabbitMQ RPC 通信模式详解
  • Mac Big Sur 使用 Docker 运行 OpenCode 实现 AI 自动化开发流程
  • 融合选择性卷积与残差结构的 SKResNet 架构详解
  • 5 款主流 AI 应用开发工具对比与选型建议
  • 字节跳动 Java 后端开发面试题精选
  • Power BI 集成 Python 实现高级数据可视化与分析
  • 网络安全体系解析:三大方向与学习路线指南
  • Shannon:基于 AI 的自动化 Web 应用漏洞检测工具
  • 国内热门 AI 绘画工具盘点(上)
  • Llama 3-8B-Instruct 在昇腾 NPU 上的 SGLang 性能实测
  • Node.js 18+ 安装教程
  • VSCode Copilot 无法登录原因排查与恢复指南
  • MySQL 复杂查询:连接、嵌套与集合操作
  • 初识 LangChain 与大语言模型基础
  • 本地部署大模型与知识库构建指南
  • Linux 信号捕捉原理与实现

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online