实时备份系统:
项目简介
包括一个Windows下的客户端和Linux下的服务端,Windows下的客户端负责将需要上传的文件进行上传,然后Linux下的服务端接收上传的文件并且进行热点判断,将非热点的文件进行压缩存储,并且在浏览器端还包括了文件的查看和下载功能
项目描述
项目的简单描述:
1.在Windows下的客户端:
首先每次客户端启动的时候应该初始化加载原有的数据,然后在一个固定的目录中查找是否当前有需要备份的文件,查找的方法是根据文件的ETag信息(文件的etag信息在本项目中计算的就是文件的大小以及最后一次访问时间的集合),若etag信息与原来的etag信息不相等,就说明文件可能是刚刚经过修改或者是文件刚刚新建,这种文件就会被客户端根据httplib搭建HTTP客户端上传给服务端,并且每次上传之后,都更新客户端这边的文件存储信息。
2.在Linux下的服务端:
首先根据httplib搭建HTTP服务端,然后获取客户端的请求方法,若Windows下的客户端在上传文件,那么服务端收到的就是PUT请求方法,然后将上传的文件首先进行非热点判断,如果文件的最后一次访问时间与当前时间的差值小于5s,就将这个文件当做一个非热点文件,我们会将非热点文件首先压缩,然后删除它的源文件,然后将此时的所有文件都加入数据管理模块,放入数据库中进行持久化存储。
3.在浏览器的客户端:
在浏览器的客户端可以向服务端发出Get请求,并且搭配List和Download进行备份文件的查看和点击下载
项目设计
项目的模块设计:
Windows下的客户端:
1.数据管理模块:
客户端数据管理模块:
class DataManager
{
public:
DataManager(const std::string &filename):_stire_file(filename){
}
bool Insert(const std::string &key,const std::string &val);//备份文件之后插入/更新数据信息
bool GetEtag(const std::string &key,std::string *val);//获取文件原有etag信息进行比对
bool InitLoad();//初始化加载
bool Storage();//每次更新数据之后持久化存储
private