跨平台文件传输: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/

Read more

【红黑树进阶】手撕STL源码:从零封装RB-tree实现map和set

【红黑树进阶】手撕STL源码:从零封装RB-tree实现map和set

👇点击进入作者专栏: 《算法画解》 ✅ 《linux系统编程》✅ 《C++》 ✅ 文章目录 * 一. 源码及框架分析 * 1.1 STL源码中的设计思想 * 1.2 STL源码框架分析 * 二. 模拟实现map和set(实现复用红黑树的框架) * 2.1 红黑树节点的定义 * 2.2 红黑树的基本框架 * 2.3 解决Key的比较问题:KeyOfT仿函数 * 2.4 支持insert插入 * 2.5 map和set的insert封装 * 三. 迭代器的实现 * 3.1 迭代器结构设计 * 3.2 迭代器的++操作 * 3.3 迭代器的--操作 * 3.4 RBTree中的迭代器接口 * 四. map和set对迭代器的封装 * 4.

微信网页版完全解决方案:wechat-need-web插件让浏览器聊微信不再受限

微信网页版完全解决方案:wechat-need-web插件让浏览器聊微信不再受限 【免费下载链接】wechat-need-web让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 你是否遇到过微信网页版无法访问的问题?wechat-need-web插件正是为解决这一痛点而生,它能让你在Chrome、Edge和Firefox浏览器中顺畅使用微信网页版,无需安装臃肿的客户端,轻松实现浏览器内的微信沟通。 为什么微信网页版访问总是失败? 很多用户反馈,直接访问微信网页版时经常遇到"无法登录"或"网络错误"等提示。这是因为微信对网页端访问采取了严格的验证机制,普通浏览器请求往往会被服务器拒绝。对于需要在工作电脑上使用微信的用户来说,这无疑带来了极大的不便。 wechat-need-web如何解决网页版访问难题? wechat-need-web插件通过智能技术手段,在浏览器请求中动态添加必要的验证参数,让微信服务器

前端大文件分片上传实现与断点续传方案(含完整代码讲解)

在上传大文件(如视频、安装包、模型文件)时,直接上传容易出现以下问题: * 文件过大 → 浏览器/服务器容易超时 * 上传过程中断 → 重新上传浪费时间 * 网络波动 → 上传失败率高 因此,大文件分片上传 + 断点续传 + 秒传校验 是目前最通用、最稳定的解决方案。 本文将通过一段完整可运行的示例代码,详细讲解如何在前端实现分片上传、断点续传、服务端校验等关键功能。 ✨ 实现效果 * ✔ 自动切片(默认 5MB/片,可配置) * ✔ 查询已上传分片(断点续传) * ✔ 自动跳过已上传的片段 * ✔ 每片上传成功后重新校验 * ✔ 所有片段上传完成后自动触发合并 * ✔ 错误处理完善 📌 核心代码(uploadLargeFile) 以下代码就是本文的核心逻辑,也是你提供的代码版本,经过梳理解释后会更易理解: export async function uploadLargeFile({ file, fileId, id, chunkSize = 5 * 1024

3个步骤搞定Dify工作流Web交互界面开发:从登录表单到状态管理

3个步骤搞定Dify工作流Web交互界面开发:从登录表单到状态管理 【免费下载链接】Awesome-Dify-Workflow分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-Workflow 在低代码开发领域,Dify工作流为AI应用提供了强大的可视化开发能力,但开发者常面临三大痛点:如何设计直观的用户交互界面?怎样实现安全可靠的用户认证流程?以及如何在不同节点间有效管理用户状态?本文将通过"设计理念→实现步骤→调试技巧"三阶结构,带你用低代码方式构建企业级Web交互界面,重点解决表单交互、用户认证和跨节点状态管理难题。 设计理念:Dify交互界面的核心架构 Dify工作流的Web交互设计基于"节点驱动"架构,将传统前端开发中的页面、组件和逻辑拆分为可配置的节点组合。这种设计理念带来三大优势:无需编写HTML/CSS即可生成界面、通过节点连接实现业务逻辑、