# 深度镜像同步器 **Repository Path**: deepin20/deepin-mirror-sync ## Basic Information - **Project Name**: 深度镜像同步器 - **Description**: 深度镜像同步器 (Deepin Mirror Sync, DMS):一款专为 Deepin 及 Debian 系发行版设计的图形化仓库镜像同步工具。 - **Primary Language**: Python - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-18 - **Last Updated**: 2026-08-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 深度镜像同步器 (Deepin Mirror Sync, DMS) > 一款专为 Deepin 及 Debian 系发行版设计的图形化仓库镜像同步工具。 [![License](https://img.shields.io/badge/license-GPLv3-blue.svg)](LICENSE) [![Python](https://img.shields.io/badge/python-3.8%2B-blue)](https://www.python.org/) [![Qt](https://img.shields.io/badge/Qt-6.5%2B-green)](https://www.qt.io/) ![DMS 图标](resources/icons/dms.png) --- ## 📖 简介 深度镜像同步器(DMS)是一款基于 Qt6 的图形化工具,用于将 Deepin(或其他 Debian 发行版)的软件仓库镜像到本地。它提供了丰富的配置选项、智能调度、APT 元数据生成、健康检查、历史记录等功能,帮助用户高效搭建和管理本地镜像源。 无论是个人开发者、企业运维还是社区镜像站,DMS 都能为您提供简单、可靠的仓库同步体验。 --- ## ✨ 功能特性 - **多源同步**:支持 RSync、HTTP/HTTPS 等多种协议,可管理多个上游源并设置主备切换。 - **细粒度控制**:按架构(amd64, i386, arm64, all, source)、排除模式、文件时间等过滤同步内容。 - **智能调度**:支持每日、每周定时同步,可自定义执行时间,支持 Cron 表达式(扩展中)。 - **APT 元数据生成**:自动生成 `Packages`、`Sources` 和完整的 `Release` 文件(支持多发行版/组件)。 - **本地仓库健康检查**:验证索引与包的完整性,检测孤儿文件与损坏包,支持一键修复。 - **同步报告**:每次同步后自动生成 HTML/PDF 报告,包含变更统计、传输速率图表、错误日志。 - **历史记录**:记录每次同步的详细信息(时间、状态、大小、速度),支持筛选和导出为 CSV。 - **多任务管理**(开发中):支持同时管理多个同步任务,串行或并行执行。 - **图形界面与命令行**:提供友好的 GUI(基于 Qt6),同时支持 CLI 模式,便于自动化集成。 - **系统托盘**:常驻后台,进度实时可见,支持快捷操作。 - **深色/浅色主题**:适配系统主题,保护视力。 - **Web 管理界面**(规划中):通过浏览器远程管理和监控同步任务。 --- ## 📦 系统要求 - **操作系统**:Deepin 20+ / Ubuntu 20.04+ / Debian 11+(或其他 Linux 发行版) - **Python**:3.8 或更高版本 - **系统命令**: - `rsync`(同步核心) - `dpkg-scanpackages`(生成 Packages 文件) - `apt-ftparchive`(生成完整 Release,建议安装) - `gzip`(压缩 Packages) - `git`(用于克隆仓库) 安装系统依赖(Debian/Deepin): ```bash sudo apt update sudo apt install rsync dpkg-dev apt-utils gzip git ``` --- ## 🚀 安装与运行 ### 1. 克隆代码 ```bash git clone https://github.com/yourusername/deepin-mirror-sync.git cd deepin-mirror-sync ``` ### 2. 运行安装脚本(自动创建虚拟环境并安装依赖) ```bash chmod +x run.sh ./run.sh install ``` 该命令将在项目根目录创建 `.venv` 虚拟环境,并通过 pip 安装所有必需的 Python 包(PySide6, pydantic, pyyaml, schedule 等)。 ### 3. 启动图形界面 ```bash ./run.sh ``` 首次启动时,程序会在 `~/.config/dms/` 生成默认配置文件(`config.yaml`)、源列表(`sources.yaml`)和任务列表(`tasks.yaml`)。 ### 4. 命令行模式 ```bash ./run.sh cli --help # 查看帮助 ./run.sh cli sync # 立即执行同步 ./run.sh cli check /path # 检查仓库健康 ./run.sh cli report # 生成上次同步报告 ``` --- ## 🖥️ 图形界面预览 ![主界面](docs/screenshots/main.png) 左侧为配置面板(本地路径、架构、排除模式、高级参数、上游源),右侧为命令预览、进度条和实时日志。 --- ## ⚙️ 配置管理 配置文件采用 YAML 格式,位于 `~/.config/dms/config.yaml`,主要参数包括: | 参数 | 说明 | |------|------| | `local_path` | 本地仓库根目录 | | `arch_list` | 要同步的架构列表 | | `releases` | 要同步的发行版名称(如 apricot, beige) | | `components` | 组件(main, non-free, contrib) | | `exclude_patterns` | 文件排除模式(支持通配符) | | `min_age_days` | 只同步至少 N 天前的文件 | | `enable_checksum` | 使用校验和比较(`-c`) | | `enable_delete` | 删除本地多余文件(`--delete-after`) | | `max_retries` | 失败后最大重试次数 | | `schedule_type` / `schedule_time` | 定时类型(daily/weekly)和时间(HH:MM) | 您也可以通过 GUI 的“保存配置”按钮直接修改,无需手动编辑。 --- ## 📂 目录结构(项目) ``` deepin-mirror-sync/ ├── src/dms/ # 源代码 │ ├── core/ # 核心业务逻辑 │ ├── gui/ # Qt 图形界面 │ ├── models/ # 数据模型 │ ├── signals/ # 信号定义 │ ├── web/ # Web 管理(可选) │ ├── plugins/ # 插件系统 │ └── tests/ # 单元测试 ├── resources/ # 图标、样式、翻译文件 ├── data/ # 默认配置模板 ├── scripts/ # 辅助脚本 ├── docs/ # 文档 ├── run.sh # 一键启动脚本 ├── requirements.txt # Python 依赖 └── README.md ``` --- ## 🧪 开发与贡献 ### 环境准备(开发模式) ```bash # 克隆并进入目录 git clone https://github.com/yourusername/deepin-mirror-sync.git cd deepin-mirror-sync # 创建虚拟环境并安装开发依赖 ./run.sh install source .venv/bin/activate pip install -r requirements-dev.txt # 包含 pytest, black, flake8 等 ``` ### 运行测试 ```bash pytest src/dms/tests/ ``` ### 代码风格 使用 `black` 和 `isort` 格式化: ```bash black src/ scripts/ isort src/ scripts/ ``` ### 提交规范 请遵循 [Conventional Commits](https://www.conventionalcommits.org/) 规范。 --- ## 📄 许可证 本项目基于 **GNU General Public License v3.0** 开源,详见 [LICENSE](LICENSE) 文件。 --- ## 🌟 致谢 - Deepin 社区及所有贡献者 - Qt 项目提供优秀的 GUI 框架 - rsync 团队提供强大的文件同步能力 --- ## 📮 联系方式 - 问题反馈:[GitHub Issues](https://github.com/yourusername/deepin-mirror-sync/issues) - 邮箱:deepin-community@example.com --- **快乐镜像!** 🚀