# GoodSync **Repository Path**: wcp1230/good-sync ## Basic Information - **Project Name**: GoodSync - **Description**: GoodSync是一个专注于文件同步和备份的开源项目,提供高效、安全的数据管理方案,支持跨平台使用,确保您的数据始终保持最新。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-04-01 - **Last Updated**: 2026-04-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 文件同步系统 # FileSync - 轻量高效的本地文件同步工具 ![同步状态](https://img.shields.io/badge/status-stable-brightgreen) ![语言](https://img.shields.io/badge/language-C-blue) ![依赖](https://img.shields.io/badge/dependency-pthread-lightgrey) ## 项目简介 FileSync 是一款基于 C 语言开发的跨平台本地文件同步工具,专注于解决本地目录间的文件一致性问题。支持单向/双向同步、差异预览、冲突检测、定时任务等核心功能,提供控制台与 Web 双界面交互,适配个人备份、团队协作等多种场景。 相比传统同步工具,它具备轻量化、配置灵活、日志可追溯的特点,无需依赖云服务,数据安全可控。 ## 核心功能 - **多模式同步**:单向同步(源→目标)、双向同步(合并双方更新),满足不同场景需求 - **差异预览(干运行)**:同步前预览文件新增/修改/删除情况,避免误操作 - **冲突检测与处理**:双向同步时自动识别冲突(如双方均修改文件),支持4种解决策略 - **定时任务调度**:按分钟/小时/每日等周期自动执行同步,无需手动触发 - **双界面支持**:控制台 UI 适配服务器环境,Web UI 提供可视化操作 - **完整日志系统**:记录操作时间、文件路径、执行结果,便于问题排查 - **配置持久化**:保存同步任务配置,下次启动直接加载,无需重复设置 ## 环境要求 ### 开发环境 - 操作系统:Linux(Ubuntu 20.04+)/ macOS - 编译器:GCC 9.4.0+(支持 C99 标准) - 构建工具:GNU Make 4.2.1+ - 调试工具:GDB、Valgrind(可选,用于内存泄漏检测) ### 运行环境 - 硬件:x86 架构 CPU,≥2GB 内存,≥100MB 空闲存储 - 依赖库:pthread(多线程支持,系统默认自带) - Web 界面:Chrome/Firefox 等现代浏览器(支持 HTML5) ## 安装与编译 ### 1. 克隆代码 ```bash # 克隆仓库 git clone https://github.com/your-username/filesync.git cd filesync ``` ### 2. 编译项目 项目通过 Makefile 管理构建流程,支持多种编译目标: ```bash # 编译主程序(默认生成 file_sync 可执行文件) make # 编译并运行单元测试 make test # 清理编译产物 make clean ``` 编译成功后,可执行文件将生成在项目根目录,日志目录(`./logs`)和配置目录(`./config`)会自动创建。 ## 快速使用 FileSync 支持三种操作模式,可根据使用场景选择: ### 模式1:控制台 UI(推荐新手) 通过菜单交互操作,无需记忆命令,适合桌面环境: ```bash # 启动控制台界面 ./file_sync --ui ``` **操作流程**: 1. 主菜单选择「2. 任务配置」,设置源目录、目标目录、同步模式 2. 返回主菜单选择「1. 文件同步操作」,先执行「2. 干运行」预览差异 3. 确认差异无误后,执行「1. 执行同步」完成操作 4. 通过「4. 日志查看」可追溯同步记录 ### 模式2:Web 界面(可视化) 启动 Web 服务后,通过浏览器访问,操作更直观: ```bash # 启动 Web 服务器(默认端口 8080) ./file_sync --web ``` **操作步骤**: 1. 浏览器打开 `http://localhost:8080` 进入主界面 2. 在「任务配置」栏填写同步参数,点击「保存配置」 3. 点击「干运行预览」查看差异,确认后点击「开始同步」 4. 在「系统日志」栏实时查看操作结果 ### 模式3:命令行(适合脚本自动化) 通过命令行参数直接执行同步,支持嵌入脚本批量操作: ```bash # 基本语法 ./file_sync [选项] # 常用示例 ## 单向同步(源→目标)并预览差异 ./file_sync -s ~/Documents -t /mnt/backup -m one-way -d ## 双向同步并执行实际操作 ./file_sync -s ~/Project -t ~/Project_Backup -m two-way ## 加载预设配置文件执行同步 ./file_sync -c ./config/my_task.conf ``` #### 命令行参数说明 |参数|说明|示例| |---|---|---| |-s, --source|指定源目录路径(必填)|-s ~/Documents| |-t, --target|指定目标目录路径(必填)|-t /mnt/backup| |-m, --mode|同步模式(one-way/two-way)|-m two-way| |-d, --dry-run|干运行模式,仅预览差异|无需值,直接添加| |-c, --config|加载预设配置文件|-c ./config/task.conf| |-h, --help|查看帮助信息|无需值,直接添加| ## 配置管理 同步任务配置默认保存在 `./config/default.conf`,格式为键值对,可手动修改或通过界面配置: ```ini # 任务基本信息 task_name = 文档备份任务 source_dir = /home/user/Documents target_dir = /mnt/external/Documents # 同步配置 sync_mode = one-way # one-way/two-way conflict_strategy = keep_newer # keep_source/keep_target/keep_newer/keep_both # 定时配置(仅定时任务生效) schedule_type = daily # minute/hour/daily specific_time = 03:00 # 每日3点执行(仅daily类型需要) # 日志与版本 log_dir = ./logs version_keep_days = 7 # 旧版本保留7天 ``` ## 冲突处理策略 双向同步时若检测到文件冲突(如双方均修改同一文件),支持以下4种策略,可在配置中指定: - **keep_source**:保留源目录文件,覆盖目标目录 - **keep_target**:保留目标目录文件,覆盖源目录 - **keep_newer**:保留修改时间更新的文件(推荐) - **keep_both**:双方文件均保留,自动重命名(如 file.txt → file_src.txt) ## 日志系统 同步日志默认存储在 `./logs/file_sync_YYYYMMDD.log`,每条日志包含时间戳、操作类型、文件路径、结果: ```text 2025-11-21 14:30:05 [INFO] 启动同步任务:文档备份任务 2025-11-21 14:30:06 [DIFF] 新增文件:/home/user/Documents/笔记.md 2025-11-21 14:30:07 [DIFF] 修改文件:/home/user/Documents/报告.pdf 2025-11-21 14:30:08 [SUCCESS] 同步完成,成功处理2个文件 2025-11-21 14:35:10 [ERROR] 同步失败:/home/user/Documents/加密文件.rar(权限不足) ``` ## 常见问题 ### Q1:目录路径包含空格时无法扫描? A:命令行模式下需用引号包裹路径,如 `-s "/home/user/My Documents"`;界面模式下直接输入即可,系统会自动处理。 ### Q2:Web 界面无法访问? A:1. 检查端口 8080 是否被占用(可用 `netstat -tulpn | grep 8080` 查看);2. 确认启动命令为 `./file_sync --web`;3. 防火墙开放 8080 端口。 ### Q3:日志文件未生成? A:检查日志目录是否存在且有写入权限,可手动创建目录 `mkdir -p ./logs` 后重新运行。 ## 许可证 本项目采用 MIT 许可证开源,详见 [LICENSE](https://www.doubao.cn) 文件。 ## 贡献指南 欢迎通过以下方式参与项目改进: 1. 提交 Issue:反馈 Bug 或提出功能需求 2. 提交 PR:修复 Bug 或实现新功能,需配合单元测试 3. 文档完善:补充使用案例或优化说明文档 ## 联系作者 邮箱:your-email@example.com GitHub:[https://github.com/your-username/filesync](https://github.com/your-username/filesync) > (注:文档部分内容可能由 AI 生成)