一个基于Python、Tkinter构建的可视化目录文件同步工具,支持双向同步、文件比较、预览等功能。
PyDirectoryComparison 是一个功能强大的目录同步工具,旨在帮助用户轻松管理和同步两个目录之间的文件。无论是备份照片、同步工作文档,还是保持多个设备间的文件一致性,本工具都能提供可靠的解决方案。
- 📸 照片备份:将相机或手机的照片备份到电脑
- 💼 文档同步:在工作电脑和移动设备间同步文档
- 🔄 版本管理:比较不同版本的文件差异
- 📦 项目备份:备份项目文件到多个位置
- 🎯 数据迁移:在不同存储设备间迁移数据
- 🔒 安全可靠:预览模式确保操作可控
- ⚡ 高效快速:优化的比较和同步算法
- 🎨 界面友好:直观的图形化操作界面
- 🧪 测试完善:50+测试用例保证质量
- 📝 日志完整:详细记录所有操作历史
- 目录比较:递归比较两个目录的结构差异
- 文件同步:支持单向和双向同步
- 进度显示:实时显示同步进度
- 预览模式:在实际执行前预览操作
- 双向同步:支持左→右、右→左、双向三种同步模式
- 智能比较:按文件内容和修改时间比较文件
- 冲突检测:识别两边都修改过的文件
- 结果筛选:按状态筛选显示差异文件
- 删除多余:可选择删除目标目录中多余的文件
- 详细统计:显示文件数量、大小等统计信息
- 操作日志:记录所有操作历史
- 架构分离:GUI与业务逻辑完全分离
- 错误处理:完善的异常处理机制
- 路径处理:使用pathlib替代字符串操作
- 类型提示:完整的类型注解
- 可配置:支持自定义忽略规则
- Python 3.7+
本项目仅使用Python标准库,无需安装额外依赖:
- tkinter(GUI)
- pathlib(路径处理)
- filecmp(文件比较)
- shutil(文件复制)
- os(系统操作)
python main.py- 选择源目录(左边)和目标目录(右边)
- 点击"开始比较"按钮
- 查看比较结果(概览、文件差异、目录差异)
- 选择同步方向和选项
- 点击"开始同步"执行同步
- 同步方向:
- 左 → 右:将左边独有的和修改过的文件同步到右边
- 右 → 左:将右边独有的和修改过的文件同步到左边
- 双向:同步两边独有的文件
- 删除多余文件:删除目标目录中多余的文件
- 预览模式:只显示将要执行的操作,不实际执行
PyDirectoryComparison/
├── main.py # 程序入口
├── config.py # 配置文件
├── run_tests.py # 测试运行脚本
├── core/ # 核心业务逻辑
│ ├── __init__.py
│ ├── models.py # 数据模型
│ ├── comparator.py # 目录比较器
│ └── synchronizer.py # 目录同步器
├── gui/ # GUI界面
│ ├── __init__.py
│ └── main_window.py # 主窗口
└── tests/ # 测试模块
├── __init__.py
├── test_utils.py # 测试工具
├── test_models.py # 数据模型测试
├── test_comparator.py # 比较器测试
├── test_synchronizer.py # 同步器测试
└── test_integration.py # 集成测试
- models.py:定义数据模型(FileInfo、DirectoryInfo、ComparisonResult等)
- comparator.py:负责目录比较逻辑
- synchronizer.py:负责文件同步逻辑
- main_window.py:主窗口实现,包含所有UI组件和事件处理
- GUI与业务逻辑完全分离
- 使用数据类(dataclass)定义数据模型
- 回调机制实现进度更新
- 类型提示提高代码可读性
在config.py中可以修改以下配置:
- 默认忽略的文件和目录模式
- 窗口大小
- 日志配置
- 性能参数
项目包含完整的测试套件,确保功能的准确性和稳定性。
# 运行所有测试
python run_tests.py
# 运行特定模块测试
python run_tests.py --module test_models
python run_tests.py --module test_comparator
python run_tests.py --module test_synchronizer
python run_tests.py --module test_integration
# 运行特定测试类
python run_tests.py --module test_comparator --class TestDirectoryComparator
# 运行特定测试方法
python run_tests.py --module test_synchronizer --class TestDirectorySynchronizer --method test_sync_left_to_right
# 详细输出
python run_tests.py -v
# 静默输出
python run_tests.py -q- 单元测试:数据模型、比较器、同步器
- 集成测试:完整同步流程、增量同步、性能测试
- 边界测试:空目录、深层目录、特殊字符
- 错误处理:权限问题、不存在路径等
详细测试文档请参考 tests/README.md
- 文件比较:程序会比较文件内容,对于大文件可能需要较长时间
- 删除操作:开启"删除多余文件"选项时请谨慎操作
- 预览模式:建议首次使用时先使用预览模式查看将要执行的操作
- 备份:重要数据请先备份再同步
- 重构代码架构,分离GUI和业务逻辑
- 添加双向同步功能
- 添加预览模式
- 添加进度显示
- 添加冲突检测
- 添加结果筛选功能
- 添加详细统计信息
- 改进错误处理
- 使用pathlib替代字符串操作
- 添加类型提示
- 初始版本
- 基本的目录比较和单向同步功能
J.sky bosichong@qq.com
本项目采用 MIT 许可证。
