# CopyMaster
**Repository Path**: luo-yinhe/copy-master
## Basic Information
- **Project Name**: CopyMaster
- **Description**: 一款面向摄影师和视频创作者的素材安全拷贝工具。支持多路径并行备份、SHA256/MD5文件校验、FFmpeg离线转码、任务队列管理、断点续传、双主题与中英文双语。纯Go + Wails构建,单文件16MB,全平台支持,零外部依赖。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-06-19
- **Last Updated**: 2026-06-20
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
⚡ CopyMaster
一张卡 → 多个目标,自动校验,离线转码
跨平台素材拷贝管理工具
---
## 🚀 为什么需要 CopyMaster?
摄影、摄像工作者每天都在重复一件事:**把存储卡的素材拷到硬盘**。
拷一张卡到一个硬盘?简单。但你要拷到 3 个备份盘、还要校验完整性、还要转一份代理剪辑——这就麻烦了。
**CopyMaster 就是为解决这个问题而生的。**
```
一张 SD 卡 ──┬── 📁 硬盘 A(完整备份)
├── 📁 硬盘 B(完整备份)
├── 📁 NAS(完整备份)
└── 🎬 自动转码代理版本
│
└── ✅ SHA-256 校验,100% 数据一致
```
---
## 🆕 最近更新
> **v0.3.0** — 多源选择 · 增强进度 · 优化报告
| 改动 | 详情 |
|------|------|
| 🗂️ **多源混合选择** | 支持同时选择多个文件和文件夹传输,不再限制单一源路径。手动输入、设备快捷添加、一键清空,灵活组合 |
| 📊 **增强传输进度** | 实时显示传输速度(MB/s)、剩余时间 ETA、文件进度(X/N)、当前文件名与目标路径,进度条渐变动画 |
| 📋 **优化传输报告** | 新增各目的地统计卡片(文件数/通过/失败/大小)、文件耗时列、任务详情区,HTML/CSV 双格式全面升级 |
更多 v0.3.0 改进
- 恢复磁盘空间预检,空间不足时拒绝启动
- 冲突跳过模式验证文件大小,确保目标完整
- 转码输出修正到目标目录,失败自动清理
- 全组件暗色主题适配(CSS 变量)
- i18n 补全 27 个翻译键,消除硬编码中文
- JSON 解析器从手写改为标准库
---
## ✨ 核心功能
| 功能 | 说明 |
|------|------|
| 🔀 **多路径并行备份** | 1 张卡 → N 个目标同时写入,Worker Pool 并发 |
| 🗂️ **多源混合选择** | 多个文件 + 文件夹任意组合,灵活传输 |
| 🔐 **SHA-256 / MD5 校验** | 拷贝前后自动哈希比对,确保数据零损失 |
| 🎬 **FFmpeg 离线转码** | 备份同时转码为代理/存档/预览格式 |
| 💾 **断点续传** | 大文件中断后从断点恢复,不从头开始 |
| ⚡ **磁盘空间预检** | 拷贝前检测目标盘空间,避免中途失败 |
| 🔄 **冲突处理** | 跳过 / 覆盖 / 重命名,三种策略任选 |
| 📋 **预设管理** | 常用路径组合保存为预设,一键启动 |
| 📊 **导出报告** | HTML / CSV 报告,含目的地统计 + 文件耗时 |
| 🌓 **暗色 / 亮色主题** | 双主题切换,护眼更舒适 |
| 🌍 **中 / English 双语** | 80+ 条翻译,一键切换语言 |
| 📝 **操作审计日志** | 所有操作留痕,便于追溯 |
---
## 📸 界面预览
```
┌──────────────────────────────────────────────────────┐
│ ⚡ CopyMaster [拷贝] [转码] [报告] [设置] │
├──────────────────────────────────────────────────────┤
│ │
│ 源路径 [3] [+ 文件夹] [+ 文件] [清空] │
│ ┌──────────────────────────────────────────────┐ │
│ │ 📁 D:\DCIM\100CANON ✕│ │
│ │ 📄 E:\BGM\background.mp3 ✕│ │
│ │ 📁 F:\Footage\Interview ✕│ │
│ └──────────────────────────────────────────────┘ │
│ [手动输入路径... ] [添加] │
│ 可用设备: [💾 Drive C:] [💾 Drive D:] [💾 Drive E:] │
│ │
│ 目标路径 [2] [+ 文件夹] │
│ ☑ HDD Backup (D:) ☑ NAS (\\192.168.1.100\bk) │
│ [D:\backup] [\\192.168.1.100\backup] │
│ │
│ [🚀 开始备份] [取消任务] [保存预设] │
│ │
│ ── 正在传输 ── │
│ 文件 12 / 47 | 68% │
│ 速度: 112.5 MB/s 剩余: 1.2 GB 预计: 11秒 │
│ ████████████████░░░░░░░░░░░░░ 68% │
│ 📄 DSC_0423.MOV → HDD Backup │
│ │
└──────────────────────────────────────────────────────┘
```
---
## 🛠️ 技术栈
| 层 | 技术 | 说明 |
|----|------|------|
| 🖥️ 后端 | **Go 1.21+** | 高并发 I/O,零 CGO 依赖 |
| 🎨 前端 | **Vue 3 + TypeScript** | 响应式 UI,组件化架构 |
| 📦 桌面 | **Wails v2** | 轻量级跨平台桌面框架 |
| 💾 数据库 | **SQLite** | `modernc.org/sqlite`,纯 Go 实现 |
| 🎬 转码 | **FFmpeg CLI** | 命令行调用,支持 H.264/H.265/ProRes |
| 🧪 测试 | **Go testing** | 27 个测试用例,覆盖核心模块 |
| 🚀 CI/CD | **Gitee Go** | 自动化构建、测试、跨平台打包 |
---
## 📁 项目结构
```
copymaster/
├── app.go # 🎯 应用入口 & Wails RPC
├── main.go # 🚀 程序启动
├── internal/
│ ├── copier/ # ⚡ 多路径拷贝引擎
│ ├── checksum/ # 🔐 哈希校验 (SHA256/MD5)
│ ├── transcoder/ # 🎬 FFmpeg 转码封装
│ ├── reporter/ # 📊 报告生成 (HTML/CSV)
│ ├── queue/ # 📋 任务队列管理
│ ├── preset/ # 💾 预设管理
│ ├── filter/ # 🔍 文件过滤
│ ├── disk/ # 💿 磁盘空间检测
│ ├── logger/ # 📝 日志 & 审计
│ ├── storage/ # 🗄️ SQLite 数据层
│ └── version/ # 🔍 版本检查
├── frontend/ # 🎨 Vue 3 前端
├── docs/ # 📚 21 份文档
├── scripts/ # 🔧 构建脚本
├── Makefile # ⚙️ 一键构建
└── .gitee-ci.yml # 🚀 CI/CD 流水线
```
---
## ⚡ 快速开始
### 环境要求
| 工具 | 最低版本 | 安装方式 |
|------|----------|----------|
| Go | 1.21+ | `winget install GoLang.Go` / `brew install go` |
| Node.js | 18+ | `winget install OpenJS.NodeJS.LTS` / `brew install node@18` |
| Wails CLI | 2.12.0 | `go install github.com/wailsapp/wails/v2/cmd/wails@v2.12.0` |
详细安装指南见 [docs/ENVIRONMENT.md](docs/ENVIRONMENT.md)
### 安装依赖
```bash
git clone https://gitee.com/luo-yinhe/copymaster.git
cd copymaster
make deps
```
### 开发模式
```bash
make dev
```
### 本地预构建验证
```bash
# 自动检查版本、格式、lint、测试、构建
make pre-check
```
### 构建发布
```bash
# 当前平台
make build
# 全平台
make build-all
```
---
## 🚀 CI/CD 流水线
项目使用 Gitee Go 自动化流水线,push 或 merge request 到 main/master 时自动触发:
```
setup → lint → test → build
```
| 阶段 | 内容 |
|------|------|
| setup | 安装 Node.js、Wails CLI、golangci-lint |
| lint | gofmt 格式检查、go vet 静态分析、golangci-lint |
| test | 单元测试 + 竞态检测 + 覆盖率报告 |
| build | 跨平台构建 Windows/macOS/Linux,产物保存 7 天 |
CI 使用 `golang:1.21` 官方镜像,与本地开发环境版本一致。
详细说明见 [docs/GITEE-CI-GUIDE.md](docs/GITEE-CI-GUIDE.md)
---
## 📚 文档
| 文档 | 说明 |
|------|------|
| [📖 用户手册](docs/USER_GUIDE.md) | 安装、操作、FAQ |
| [🏗️ 架构设计](docs/ARCHITECTURE.md) | 系统架构 & 模块职责 |
| [🔌 API 文档](docs/API.md) | Wails 绑定接口 |
| [🔨 构建指南](docs/BUILD.md) | 多平台构建说明 |
| [📝 开发规范](docs/DEVELOPMENT.md) | 编码标准 & 工作流 |
| [🚀 发布清单](docs/RELEASE_CHECKLIST.md) | 版本发布前检查 |
| [📋 更新日志](docs/CHANGELOG.md) | 版本更新记录 |
| [⚙️ 环境配置](docs/ENVIRONMENT.md) | 开发环境安装指南 |
| [🔧 CI/CD 指南](docs/GITEE-CI-GUIDE.md) | Gitee Go 流水线说明 |
---
## 🏗️ 构建状态
| 指标 | 状态 |
|------|------|
| ✅ 测试通过 | 27/27 |
| ✅ CGO 禁用 | 无外部 C 依赖 |
| ✅ 跨平台 | Windows / macOS / Linux |
| ✅ 构建产物 | 16MB 单文件 |
| ✅ 离线运行 | 不依赖公网服务 |
---
## 📄 许可证
[BSL 1.1 (Business Source License)](LICENSE) © 2026 罗银河
| 使用场景 | 是否免费 | 条件 |
|----------|---------|------|
| 🎓 个人学习 / 研究 / 爱好 | ✅ 完全免费 | 无限制 |
| 🔧 非商业二开 | ✅ 免费 | 保留著作权和协议 |
| 💼 商业使用 | ⚠️ 需授权 | [联系作者](mailto:yhkjsj@foxmail.com) 获取商业授权 |
| 🏢 企业内部使用 | ⚠️ 需授权 | [联系作者](mailto:yhkjsj@foxmail.com) 获取商业授权 |
| 📦 二开并分发 | ⚠️ 需开源 | 必须公开全部源码,或获取商业授权 |
| 🔀 贡献 PR | ✅ 欢迎 | 贡献代码即同意同等授权 |
> **3 年后自动转为 MIT 协议**(2029-06-19 起),届时可完全自由使用。
---
⭐ 如果 CopyMaster 对你有帮助,请给个 Star 支持一下!
📧 商业授权咨询:yhkjsj@foxmail.com