在集成流水线时,我曾遇到需要跨平台传输文件的场景(服务器需要与其他平台进行文件交互)。虽然 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 ::

