欢迎光临
我们一直在努力

跨平台文件传输:WebDAV + Rclone

        在集成流水线时,我曾遇到需要跨平台传输文件的场景(服务器需要与其他平台进行文件交互)。虽然 OpenSSH(scp/sftp)是最简便的方案,但公司出于安全策略,禁止机器间通过 OpenSSH 进行文件传输。因此我尝试了 NFS/SMB、临时 HTTP 共享等多种方式,但均因安全策略限制或配置复杂未能落地。

        最终我采用了 WebDAV + rclone 的组合方案实现跨平台文件传输:

  • 使用 WebDAV 共享目标机器的目录;
  • 通过 rclone 对共享目录进行稳定的读写操作。

        该方案适用于内部工具场景,非部署生产环境。实际使用中,我以测试机/工作机(macOS/Windows)作为 WebDAV 服务端,在另一台 macOS 服务器上通过 rclone 对测试机进行文件的上传、下载与管理,实现了稳定、轻量、符合公司安全规范的跨平台文件互通。

实现步骤

Apache

        用Apache开启webdav服务非常方便,macOS平台自带Apache,Windows需要自己下载安装(下载-安装-配置环境变量)。

Windows

  • 打开:https://www.apachelounge.com/download/,下载对应系统的版本
  • 解压到一个无空格、无中文的目录(比如 D:\\Apache)
  • 打开配置文件(D:\\Apache\\Apache24\\conf\\httpd.conf)

# 找到并修改 ServerRoot(必须与解压路径一致)
Define SRVROOT "D:/Apache/Apache24"
ServerRoot "${SRVROOT}"

# 找到 Listen 80,可改为其他端口(如 8080)避免冲突
Listen 8080

# 在配置文件末尾添加一行,端口必须对应
ServerName 127.0.0.1:8080

  • 管理员打开cmd,测试配置是否正确

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

  • 启动 Apache

        管理员cmd:

httpd -k start :: 初次
httpd -k restart :: 重启

:: 或注册为Windows服务,作为后台服务
httpd -k install
net start Apache2.4

浏览器访问:http://localhost:8080,看到“ It works! ”即成功。

  • 若修改配置,需要重启httpd才能生效

httpd -t :: 检查语法
httpd -k restart :: 重启

:: 或注册为Windows服务
net stop Apache2.4 :: 停止服务
httpd -t :: 检查语法
net start Apache2.4 :: 重启

Webdav

        下面主要记录Windows下开启webdav的步骤,macOS上步骤相同,操作不同,macOS的共享文件最好创建在Shared目录下。此外不设置账号和密码,允许匿名登录,若要设置账号密码,修改相关配置即可。

开启 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 :: 对应配置中的 DavLockDB 路径

共享目录权限配置

        D盘一般可以跳过这一节:

  • 右键 D:\\webdav_share → 属性 → 安全 → 编辑 → 添加;
  • 输入 Everyone → 确定 → 勾选 “完全控制、修改、读取和执行、列出文件夹目录、读取、写入”;
  • (optional)若 Apache 以服务运行,需给 SYSTEM 或 Apache2.4 服务账户赋相同权限。

创建独立的WebDAV配置文件

cd /d D:\\Apache\\Apache24\\conf

:: 新建 extra 文件夹(仅当不存在时创建)
if not exist "extra" mkdir extra

:: 进入 extra 目录
cd extra

:: 创建webdav配置文件
type nul > httpd-webdav.conf

:: 打开配置文件
notepad httpd-webdav.conf

        打开WebDAV配置文件,拷贝如下内容:

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 支持Rclone大文件传输(几百Mb的文件已经算是大文件了),则必须解除 Apache 对请求体大小、上传分块(chunk)的限制,关键配置是 LimitRequestBody(控制请求体大小)和 DavMaxRequestSize(WebDAV 专属的请求大小限制)。配置文件中添加如下内容:

# 1. 解除请求体大小限制(0 = 无限制,单位:字节)
LimitRequestBody 0

# 2. WebDAV 专属:解除请求大小限制(无上限)
DavMaxRequestSize 0

# 3. 延长超时时间(避免大文件传输超时,单位:秒)
TimeOut 3600

# 4. 关闭分块传输限制(兼容旧客户端)
EnableSendfile Off
EnableMMAP Off

引入主配置文件

      打开 ~\\Apache24\\conf\\httpd.conf,在文件末尾添加一行:

Include conf/extra/httpd-webdav.conf

httpd检查语法并重启

        管理员cmd:

httpd -t :: 检查语法
httpd -k restart :: 重启

:: 或注册为Windows服务
net stop Apache2.4 :: 停止服务
httpd -t :: 检查语法
net start Apache2.4 :: 重启

本地测试

        打开浏览器,访问 http://localhost:8080/webdav成功!

跨机器访问

        跨机器访问需要解除防火墙限制,管理员cmd:

:: 放行 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

下载安装

        下载 rclone(https://rclone.org/,全平台),或命令行。

        macOS:

# 安装 Homebrew(如未装)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 安装 rclone
brew install rclone

# 验证
rclone version

        Windows(管理员Powershell):

winget install Rclone.Rclone

WebDAV配置

# 进入配置向导
rclone config

# 按提示:
# n → 新建远程
# name(如 webdav)
# storage:WebDAV
# url(如 http://192.168.1.100/webdav)
# vendor: 7
# 用户名、密码 (没有则跳过)
# 完成后 q 退出

常用命令

# 列出文件
rclone ls webdav:/

# 上传文件 copy A to B
rclone copy local_file.txt webdav:/path/

赞(0)
未经允许不得转载:171主机测评 » 跨平台文件传输:WebDAV + Rclone
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址