# ymbxcbp **Repository Path**: ymbx/cloudbp ## Basic Information - **Project Name**: ymbxcbp - **Description**: 本项目实现了客户端和服务端进行文件上传和备份指定文件夹下文件的功能 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-27 - **Last Updated**: 2025-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ymbxcbp *ymbxcbp*实现了自动将客户端上指定文件夹中的文件上传备份到服务器中,多用户通过浏览器登录查看所属文件列表并下载,其中下载过程支持断点续传;服务器启动时会从配置文件中加载相关信息对上传文件进行数据和热点管理,定期将文件信息持久化存储,以及对非热点文件进行压缩存储,节省磁盘空间。还引入ymbxLog中打包好的日志库进行调试和日志输出。 #### 主要功能 ##### 服务端 - **配置管理**:启动时加载配置文件,支持动态更新备份策略。 - **文件备份与管理**:对客户端上传的文件进行备份,对文件信息进行动态持久化存储。 - **热点文件管理**:对文件进行热点管理,对非热点文件进行压缩存储,节省磁盘空间。 - **Web 服务**:支持客户端浏览器上传、查看、下载文件,且下载支持断点续传。 - **多用户管理**:支持用户注册、登录,查看各自的文件列表。 ##### 客户端 - **文件监控**:能够自动检测客户端指定文件夹变化,自动识别新增/修改文件。 - **增量备份**:仅上传变化文件,减少带宽占用。 #### 技术架构 1. **开发环境**:c++、g++、gdb、vscode(ubuntu24.04)、makefile、git、visual studio(windows11) 2. **依赖库**:jsoncpp、bundle、httplib、ymbxLog #### 技术亮点 1. **智能热点文件管理**:定时任务机制执行热点状态更新;非热点文件基于bundle库提供不同压缩算法进行压缩以节省磁盘空间。 2. **高效的网络传输策略**:基于HTTP Range的断点续传协议,支持下载中途中断后恢复;客户端增量备份设计,仅上传变化文件,减少带宽消耗;基于httplib的网络通信确保传输稳定性。 3. **跨平台兼容**:统一配置文件格式(Json)实现跨平台部署;项目中代码主要基于C++11,以及C++17/filesystem编写,不同系统下只需稍微很少代码即可正常运行。 4. **模块化与可扩展架构**:双端采用模块化设计,模块间低耦合;抽象存储接口,支持后续扩展至云存储。 5. **多用户管理**:用户注册、登录,并基于cookie/session实现各自用户显示各自的文件列表。 #### 设计思路 ##### 服务端 > 1. 数据管理模块:负责服务器上备份文件的进行管理,并对文件信息进行动态持久化存储。 > 2. 热点管理模块:负责文件的热点判断,以及非热点文件的压缩存储。 > 3. 业务处理模块:基于httplib搭建网络通信模块,针对客户端的各个请求进行对应业务处理并响应结果。 > 4. 配置模块:程序运行时负责加载配置文件中的配置信息。 > 5. 用户信息模块:实现对不同用户信息的管理和维护,并对不同用户展示其各自的文件列表。 ##### 客户端 > 1. 数据管理模块:负责客户端备份文件夹下的文件信息管理,判断文件是否需要备份。 > 2. 网络通信模块:基于httplib搭建网络通信模块,实现将文件数据备份上传到服务器。 #### 引用项目 1. [jsoncpp](https://github.com/open-source-parsers/jsoncpp) 2. [bundle](https://github.com/r-lyeh-archived/bundle) 3. [httplib](https://github.com/yhirose/cpp-httplib#)