Linux(CentOS)/Win-C++ 云备份
文章平均质量分 66
此项目完成的是自动将指定文件夹中的文件上传到备份服务器上,并且能够随时通过浏览器进行查看并且下载,其中下载过程支持断点续传,服务器也会对文件进行热点管理,将非热点文件进行压缩处理,节省存储空间,这个项目实现两端程序,其中包括部署在用户机的客户端程序(Windows环境)和服务器Linux环境
NUC_Dodamce
醉生梦死谁成器,拓马长枪定乾坤。
展开
-
Linux(CentOS)/Windows-C++ 云备份项目(结项,项目总结)
客户端程序运行在Windows下,将指定的目录下的文件备份到服务器上,并且支持浏览器下载,查看。技术特点:json序列化,反序列化,文件压缩,热点管理,断点续传,线程池,读写锁,单例模式。其中下载支持断点续传,服务器对备份文件进行热点管理,将长时间未访问的文件压缩存储。开发环境:CentOS7.* VS2022 VScode makefile 等。搭建云备份服务器和客户端。原创 2024-03-29 00:06:10 · 386 阅读 · 0 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(客户端文件操作类,数据管理模块设计,文件客户端类设计)
客户端负责的功能指定目录的文件检测,获取文件夹里面的文件判断这个文件是否需要备份,服务器备份过的文件则不需要进行备份,已经备份的文件如果修改也需要重新备份若这个文件被用户打开,则不进行备份。需要每隔一段时间检测更新备份。将需要备份的文件上传备份文件客户端功能模块划分客户端的开发环境在Windows上,使用vs2022(支持C++17即可 vs2017以上)原创 2024-03-28 23:45:46 · 502 阅读 · 0 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)
http的ETag头部字段:存储了一个资源的唯一标识客户端第一次请求文件时会收到响应信息。客户端第二次下载时,客户端会把这个信息发送给服务器,让这个服务器根据这个标识判断这个资源有没有被修改锅。如果没修改过。客户端直接使用缓存区的资源。如果改过则重新修改http对ETag字段没有定义,这里设定:ETags:文件名称-文件大小-最后修改时间 构成ETags字段也用于断点续传,断点续传也需要保证文件没有被修改http协议的Accept-Ranges:bytes字段用于表示支持断点续传。原创 2024-03-27 17:49:54 · 1124 阅读 · 1 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(服务器热点管理模块设计)
遍历所有文件,检测文件最后一次访问时间与当前时间的差值,这个差值大于配置文件的时间,则认为是非热点文件,进行压缩后放入压缩路径。热点管理模块:对服务器上备份的文件进行检测,那些文件长时间没有被访问,则认为是非热点文件,进行压缩节省磁盘空间。遍历备份文件夹,获取所有文件属性信息来判断。这样比遍历内存的backuoMap更准确。注意删除源文件,修改数据管理模块的文件信息(压缩标志)原创 2024-03-26 17:05:59 · 348 阅读 · 0 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(服务器数据管理模块设计)
数据管理模块被多个线程共享,使用读写锁更好(读共享,写互斥)。每次数据更新都要重新持久化存储,避免数据丢失。每次服务器重启都要加载以前的数据。后续项目需要使用的数据如下。原创 2024-03-26 00:30:55 · 424 阅读 · 0 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(项目服务器配置信息模块,单例配置类设计)
本项目服务器的配置通过配置文件的形式来实现。配置文件格式为Json。使用配置文件加载一些程序运行关键信息可以让程序更加灵活。单例配置类设计:(紧跟前面的项目设计)原创 2024-03-24 23:32:11 · 332 阅读 · 0 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)
根据上图可知,项目文件属性获取,文件读写,文件压缩与解压缩基本功能没有问题。错误日志函数log.hpp。原创 2024-03-16 16:47:27 · 573 阅读 · 0 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(jsoncpp库,bundle数据压缩库API测试,httplib库快速搭建Http服务器,客户端测试,华为云服务器开放端口)
httplib库是一个C++11的单文件跨平台HTTP/HTTPS库,httplib库实际上是用于搭建一个简单http服务器的库,可以让我们免去搭建客户端服务器的时间。当然这个库也可以使用我的另一个项目HttpSever的部分代码,这里为了提升开发效率所以使用第三方库。biundle库是一个嵌入代码式的压缩库,支持23种压缩算法和两种存档格式,使用时只需要加入bundle.h和bundle.cpp即可。解压后的文件大小相同,计算文件的md5值看这两个文件是否相同。做过这个项目这个库的学习就会十分轻松了。原创 2024-03-16 01:56:55 · 879 阅读 · 0 评论 -
Linux(CentOS)/Windows-C++ 云备份项目(项目介绍,客户端服务器功能分析,环境搭建(gcc升级7.3版本,安装jsoncpp库,bundle库,cpp-httplib库))
此项目完成的是自动将指定文件夹中的文件上传到备份服务器上,并且能够随时通过浏览器进行查看并且下载,其中下载过程支持断点续传,服务器也会对文件进行热点管理,将非热点文件进行压缩处理,节省存储空间。原创 2024-03-15 16:19:27 · 955 阅读 · 0 评论