# FileSync **Repository Path**: gaozexi/file-sync ## Basic Information - **Project Name**: FileSync - **Description**: 文件同步,支持pc 端本地 路径同步 , S3 (minio)协议 的云端 到本地 ,本地 到云端,支持 扩展 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-12 - **Last Updated**: 2025-03-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 程序的主要目的是实现文件同步功能,支持多种文件服务器类型(如本地文件系统、MinIO、GFS等)。以下是程序的设计思路: 1. 模块化设计: - FileSyncService接口定义了文件同步的基本操作(获取源文件列表、目标文件列表、文件传输和删除)。 - 不同的文件服务器实现该接口,如LocalFileClient、MinioSyncClient、GFSSyncClient。 - FileSyncServiceFactory用于根据配置创建具体的文件同步服务实例。 2. 入口函数: - FileSyncHelper类是程序的入口,负责初始化线程池、启动同步任务,并定期输出同步进度。 - syncFiles()方法实现了文件同步的核心逻辑:比较源文件和目标文件,执行新增、更新和删除操作。 3. 并发处理: - 使用ExecutorService管理线程池,通过多线程并行处理文件传输任务,提高效率。 - 定时任务通过ScheduledExecutorService定期输出同步进度。 4. 日志记录: - 同步过程中的重要操作都会记录到日志文件中,便于后续分析和排查问题。 5. 异常处理: - 异常处理机制确保在文件传输失败或删除失败时,能够记录错误信息,并继续处理其他文件。 ```mermaid sequenceDiagram participant Main as FileSyncHelper.main() participant Factory as FileSyncServiceFactory.ins() participant Sync as FileSyncHelper.syncFiles() participant Source as FileSyncService.sourceFiles() participant Target as FileSyncService.targetFiles() participant Transfer as FileSyncHelper.transfer() participant Delete as FileSyncHelper.deleteFile() participant Log as FileSyncHelper.updateLog() Main->>Factory: 创建文件同步服务实例 Factory-->>Main: 返回具体实现(如LocalFileClient) Main->>Sync: 初始化线程池并调用syncFiles() Sync->>Source: 获取源文件列表 Source-->>Sync: 返回源文件列表 Sync->>Target: 获取目标文件列表 Target-->>Sync: 返回目标文件列表 loop 比较并同步文件 Sync->>Transfer: 提交新增或更新任务 Transfer->>Log: 记录成功或失败日志 Sync->>Delete: 提交删除任务 Delete->>Log: 记录成功或失败日志 end Sync->>Log: 写入最终同步结果日志 Main->>Main: 定期输出同步进度 ``` ![img.png](mermaid.png)