项目实践云备份概述
Posted AllenSquirrel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目实践云备份概述相关的知识,希望对你有一定的参考价值。
项目简介:
- 搭载云备份服务器和客户端,实现客户端对主机上特定目录下的文件自动进行备份到云端
- 服务器端对上传文件进行热点文件判断,对于非热点文件进行压缩存储节省磁盘空间
- 支持通过浏览器进行查看和下载,并且下载支持断点续传的功能。
- 整个传输过程支持ssl加密传输
概要设计:
客户端:windows客户端
- 功能需求:自动对指定目录下文件进行备份
- 模块划分:
- 目录监控模块:对指定目录下的文件进行判断哪些文件需要备份(新增文件,修改后文件)
- 网路通信模块:实现文件上传到云端服务器备份
- 数据管理模块:备份文件信息进行管理
服务端:linux服务器
- 功能需求:备份客户端上传文件,进行非热点压缩存储,支持浏览器访问
- 模块划分
- 网路通信模块:处理客户端请求(文件上传请求,文件列表查看请求,文件下载请求)
- 文件压缩模块:文件热点判断,并对非热点文件的压缩/解压缩
- 数据管理模块:备份文件信息进行管理
技术调研:
客户端:
- 目录监控:判断目录下哪些文件需要备份
- 需要获取目录下的所有文件信息(c++17支持的filesystem遍历,监控api)
- 根据文件信息判断是否需要备份(借助数据管理模块,首次启动全部备份)
- 数据管理模块设计(文件名称----文件唯一标识(大小+时间))
- 判断:判断读取到的文件是否存在,不存在则为新增进行备份,或者,通过唯一标识进行判断是否修改
- 网络传输备份:使用httplib库搭建http客户端实现文件上传
- 数据管理:文件名称----文件唯一标识(大小+时间) 采用map(k-v键值对)
- 内存中使用hash进行数据管理-unordered_map
- 持久化存储-文件 (序列化方式)
服务端:
- 网路通信:httplib库搭建服务器,通信接口的设计
- 文件压缩:特定压缩库
- 热点判断:一个文件一段时间没有被访问过,就是一个非热点文件 获取文件属性,与当前时间进行比对
- 数据管理:
- 源文件名称----压缩包名称
- 内存中使用hash进行数据管理-unordered_map
- 持久化存储-文件 (序列化方式)
技术路线:
客户端:监控目录,对目录中需要备份的文件进行上传备份
- 目录监控:c++17下filesysytsem遍历目录
- 获取历史备份信息
- 遍历目录,逐个获取目录下文件信息(名称+大小+时间)
- 判断是否需要备份(当前信息与历史信息比对):不存在需要备份,不匹配也需要备份
- 文件备份:
- 遍历需要备份的文件信息(获取文件路径)
- 搭建http客户端,上传文件数据,备份到云端
客户端与服务端都存在的功能需求:
1,目录遍历:
(1)客户端遍历检查需要备份的文件
(2)服务端遍历检查需要压缩的文件
2,数据管理模块中数据持久化存储与反序列化:
(1)客户端:文件名称+文件标识符(大小+时间)
(2)服务端:文件名称<-->压缩包名称
3,文件读写操作
4,字符串操作
以上是关于项目实践云备份概述的主要内容,如果未能解决你的问题,请参考以下文章
记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践