实时备份系统(项目)

项目包括Windows客户端和Linux服务端,客户端监控指定目录,检测文件变化并上传,服务端接收到文件后进行非热点判断,对非热点文件进行压缩存储。浏览器客户端支持文件查看和下载。采用httplib进行网络通信,实现文件的ETag对比和非热点压缩策略。
摘要由CSDN通过智能技术生成

项目简介

包括一个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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值