Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZankyoSync

ZankyoSync 是一款基于清单校验的 WebDAV 单向同步工具。它通过本地扫描生成资产清单,与远程服务器进行比对,实现高效的增量推送与镜像对齐。

🛠️ 工作原理

1. 本地扫描规则

程序在执行同步前,会遍历本地目录并记录每个文件的 MD5 校验码、文件大小、修改日期

  • 首次校验:对所有文件进行全量计算,生成原始清单文件。
  • 增量校验:后续扫描时,程序优先比对文件的大小和修改日期。若两者未变,则直接复用清单中的 MD5 记录;若发生变化,才重新读取文件内容进行哈希计算,从而大幅降低磁盘读取压力。

2. 同步与清理规则

在连接 WebDAV 服务器后,程序将本地清单与服务端清单(Manifest)进行差异分析:

  • 新增/修改:如果服务器不存在该文件,或文件大小/校验码不一致,则触发上传覆盖。
  • 删除(镜像对齐):如果服务器上存在本地清单之外的文件,程序将自动执行远程清理,确保服务端与本地完全对齐。
  • 安全机制:若服务端存在文件但缺失清单,程序会弹出警告以防误删,需用户确认后方可继续。

3. 并发与限速

  • 支持多线程并发上传(可自定义线程数)。
  • 支持全局上传带宽限制(KB/s),确保同步过程不影响其他业务网络。

🚀 快速上手

环境要求

  • Python 3.8+
  • 依赖库:PySide6, requests, tqdm

运行方式

  • 图形界面:运行 main.py,适合日常桌面操作。
  • 命令行界面:运行 zsync.py,支持通过编号快速启动指定的同步任务。

编译分发

如需在无 Python 环境的设备运行,请使用 PyInstaller 编译:

  1. 编译扫描引擎:pyinstaller -F zscan_fast.py
  2. 编译主程序:pyinstaller -F -w --collect-all PySide6 main.py 注:运行时请确保 zscan_fast.exe 与主程序位于同一目录下。

⚙️ 配置文件 (push_config.json)

程序支持通过配置文件自定义同步行为。您可以编辑 ignore_local_dirs 数组来排除不需要同步的目录(如 .git, node_modules 等)。

{
  "servers": [],
  "ignore_local_dirs": [".zsync", ".git", "__pycache__"]
}

⚠️ 注意事项

  • 单向同步:本工具仅负责将本地变更推送到服务器,不支持双向同步。
  • 路径范围:程序默认同步范围为执行文件所在目录的上一级。
  • 免责声明:本程序(包括本README.MD)是完全使用 Gemini 3.5 Flash AI 生成的,仅作为 AI提示词训练之用,代码及结构拙劣之处敬请客观对待。

⚖️ 免责声明与开发者说明

🤖 AI 生成声明

本程序(包括核心逻辑、UI 界面及本说明文档)完全由 Gemini 3.5 Flash AI 模型辅助生成。

  • 项目初衷:本项目主要用于 AI 提示词工程 (Prompt Engineering) 的实战训练,旨在验证大型语言模型在处理复杂文件同步逻辑、多线程调度及跨平台路径兼容性方面的开发能力。
  • 局限性说明:尽管经过人工辅助调测,但代码结构、异常处理及性能优化方面仍可能存在 AI 生成的固有局限性。请勿直接在生产环境或存储重要数据的目录下运行。

⚠️ 安全提醒

  • 数据风险:由于本工具包含 “镜像清理” 功能(即自动删除远程服务器上不在本地清单内的文件),在使用前请务必在测试目录下进行充分验证,以免造成数据误删。
  • 隐私建议push_config.json 文件以明文形式存储 WebDAV 访问凭据。请确保不要将此文件上传至任何公共代码仓库。 建议立即将该文件加入项目的 .gitignore 列表中。

🛠️ 客观对待

本项目作为一个 AI 实验作品,其代码逻辑中可能存在非最优解、冗余或不符合特定编程规范之处。欢迎各位开发者以客观、开放的态度进行技术交流,并通过 Pull Request 提交改进建议,共同探索 AI 编程的边界。


About

一个单向的WebDAV文件镜像同步程序

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages