项目实践云备份概述

Posted AllenSquirrel

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目实践云备份概述相关的知识,希望对你有一定的参考价值。

项目简介:

  • 搭载云备份服务器和客户端,实现客户端对主机上特定目录下的文件自动进行备份到云端
  • 服务器端对上传文件进行热点文件判断,对于非热点文件进行压缩存储节省磁盘空间
  • 支持通过浏览器进行查看和下载,并且下载支持断点续传的功能。
  • 整个传输过程支持ssl加密传输

概要设计:

客户端:windows客户端

  • 功能需求:自动对指定目录下文件进行备份
  • 模块划分:
  1. 目录监控模块:对指定目录下的文件进行判断哪些文件需要备份(新增文件,修改后文件) 
  2. 网路通信模块:实现文件上传到云端服务器备份
  3. 数据管理模块:备份文件信息进行管理

服务端:linux服务器

  • 功能需求:备份客户端上传文件,进行非热点压缩存储,支持浏览器访问
  • 模块划分
  1. 网路通信模块:处理客户端请求(文件上传请求,文件列表查看请求,文件下载请求)
  2. 文件压缩模块:文件热点判断,并对非热点文件的压缩/解压缩
  3. 数据管理模块:备份文件信息进行管理

技术调研:

客户端:

  • 目录监控:判断目录下哪些文件需要备份
  1. 需要获取目录下的所有文件信息(c++17支持的filesystem遍历,监控api)
  2. 根据文件信息判断是否需要备份(借助数据管理模块,首次启动全部备份)
  3. 数据管理模块设计(文件名称----文件唯一标识(大小+时间))
  4. 判断:判断读取到的文件是否存在,不存在则为新增进行备份,或者,通过唯一标识进行判断是否修改
  • 网络传输备份:使用httplib库搭建http客户端实现文件上传
  • 数据管理:文件名称----文件唯一标识(大小+时间) 采用map(k-v键值对)
  1. 内存中使用hash进行数据管理-unordered_map
  2. 持久化存储-文件  (序列化方式)

服务端:

  • 网路通信:httplib库搭建服务器,通信接口的设计
  • 文件压缩:特定压缩库
  • 热点判断:一个文件一段时间没有被访问过,就是一个非热点文件   获取文件属性,与当前时间进行比对
  • 数据管理:
  1. 源文件名称----压缩包名称
  2. 内存中使用hash进行数据管理-unordered_map
  3. 持久化存储-文件  (序列化方式)

技术路线:

客户端:监控目录,对目录中需要备份的文件进行上传备份

  • 目录监控:c++17下filesysytsem遍历目录
  1. 获取历史备份信息
  2. 遍历目录,逐个获取目录下文件信息(名称+大小+时间)
  3. 判断是否需要备份(当前信息与历史信息比对):不存在需要备份,不匹配也需要备份
  • 文件备份:
  1. 遍历需要备份的文件信息(获取文件路径)
  2. 搭建http客户端,上传文件数据,备份到云端

客户端与服务端都存在的功能需求:

1,目录遍历:

(1)客户端遍历检查需要备份的文件

(2)服务端遍历检查需要压缩的文件

2,数据管理模块中数据持久化存储与反序列化:

(1)客户端:文件名称+文件标识符(大小+时间)

(2)服务端:文件名称<-->压缩包名称

3,文件读写操作

4,字符串操作


以上是关于项目实践云备份概述的主要内容,如果未能解决你的问题,请参考以下文章

记录一次Windows2012 R2下,Sqlserver2014单点的异地实时备份实践

海西 · 云交付 DevOps实践落地方案

零基础学习云计算及大数据DBA集群架构师企业级运维技术及实践项目2015年1月21日周四

SaaS化开源项目之HouseKeeper云上部署实践

实践腾讯云服务器发布项目

阿里云NAS文件迁移项目实践