ZankyoSync 是一款基于清单校验的 WebDAV 单向同步工具。它通过本地扫描生成资产清单,与远程服务器进行比对,实现高效的增量推送与镜像对齐。
程序在执行同步前,会遍历本地目录并记录每个文件的 MD5 校验码、文件大小、修改日期:
- 首次校验:对所有文件进行全量计算,生成原始清单文件。
- 增量校验:后续扫描时,程序优先比对文件的大小和修改日期。若两者未变,则直接复用清单中的 MD5 记录;若发生变化,才重新读取文件内容进行哈希计算,从而大幅降低磁盘读取压力。
在连接 WebDAV 服务器后,程序将本地清单与服务端清单(Manifest)进行差异分析:
- 新增/修改:如果服务器不存在该文件,或文件大小/校验码不一致,则触发上传覆盖。
- 删除(镜像对齐):如果服务器上存在本地清单之外的文件,程序将自动执行远程清理,确保服务端与本地完全对齐。
- 安全机制:若服务端存在文件但缺失清单,程序会弹出警告以防误删,需用户确认后方可继续。
- 支持多线程并发上传(可自定义线程数)。
- 支持全局上传带宽限制(KB/s),确保同步过程不影响其他业务网络。
- Python 3.8+
- 依赖库:
PySide6,requests,tqdm
- 图形界面:运行
main.py,适合日常桌面操作。 - 命令行界面:运行
zsync.py,支持通过编号快速启动指定的同步任务。
如需在无 Python 环境的设备运行,请使用 PyInstaller 编译:
- 编译扫描引擎:
pyinstaller -F zscan_fast.py - 编译主程序:
pyinstaller -F -w --collect-all PySide6 main.py注:运行时请确保zscan_fast.exe与主程序位于同一目录下。
程序支持通过配置文件自定义同步行为。您可以编辑 ignore_local_dirs 数组来排除不需要同步的目录(如 .git, node_modules 等)。
{
"servers": [],
"ignore_local_dirs": [".zsync", ".git", "__pycache__"]
}
- 单向同步:本工具仅负责将本地变更推送到服务器,不支持双向同步。
- 路径范围:程序默认同步范围为执行文件所在目录的上一级。
- 免责声明:本程序(包括本README.MD)是完全使用 Gemini 3.5 Flash AI 生成的,仅作为 AI提示词训练之用,代码及结构拙劣之处敬请客观对待。
本程序(包括核心逻辑、UI 界面及本说明文档)完全由 Gemini 3.5 Flash AI 模型辅助生成。
- 项目初衷:本项目主要用于 AI 提示词工程 (Prompt Engineering) 的实战训练,旨在验证大型语言模型在处理复杂文件同步逻辑、多线程调度及跨平台路径兼容性方面的开发能力。
- 局限性说明:尽管经过人工辅助调测,但代码结构、异常处理及性能优化方面仍可能存在 AI 生成的固有局限性。请勿直接在生产环境或存储重要数据的目录下运行。
- 数据风险:由于本工具包含 “镜像清理” 功能(即自动删除远程服务器上不在本地清单内的文件),在使用前请务必在测试目录下进行充分验证,以免造成数据误删。
- 隐私建议:
push_config.json文件以明文形式存储 WebDAV 访问凭据。请确保不要将此文件上传至任何公共代码仓库。 建议立即将该文件加入项目的.gitignore列表中。
本项目作为一个 AI 实验作品,其代码逻辑中可能存在非最优解、冗余或不符合特定编程规范之处。欢迎各位开发者以客观、开放的态度进行技术交流,并通过 Pull Request 提交改进建议,共同探索 AI 编程的边界。