c++实战项目——云备份服务器

Posted 努力学习的少年

tags:

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

 项目介绍

  • 云备份服务器能够通过浏览器将文件上传到服务器上
  • 并且随时可以通过浏览器进行查看并且下载,其中下载的过程支持断点续传
  • 服务器上有热点管理模块,将非热点文件进行压缩存储,节省服务器的磁盘空间

 服务器各个模块的功能介绍

配置文件管理模块

  • 管理配置文件,当服务器启动的时候,将配置文件中配置的信息加载到服务器中,包括热点的时间,压缩文件的后缀,服务器的端口号等等.

文件信息管理模块

  • 管理上传的文件的信息,当服务器启动的时候,将备份文件信息加载到服务器上。
  • 备份文件信息备份目录和压缩目录下的的文件信息,文件信息包括文件的备份路径,压缩路径,压缩标志,文件的大小,url等等

热点管理模块

  • 不断轮询查看备份目录下的文件,如果备份目录下有文件是非热点文件,则对该文件进行压缩,并将将压缩文件放在压缩目录下,并删除备份目录下的文件,再将文件信息中的压缩标志设置为true,表示该文件已经被压缩。

 通信管理模块

1.. 当浏览器发送一个get /listshow/ http/1.1请求时,服务器会給浏览器一个html页面,用户可以在这个页面上下载想要的文件,或者上传文件到服务器上.

2. 当客户端发送一个 get /download/文件名 http1.1的请求給服务器时,表示时下载文件。

  • 首先服务器会去文件信息管理模块中查找该文件是否存在
  • 如果存在,则需要判断该文件是否被压缩,如果没有被压缩则直接将备份目录下的文件发送給浏览器
  • 如果该文件被压缩,则将压缩目录下的压缩文件解压缩放到备份目录,删除压缩文件,将文件信息的压缩标志设置为false,表示该文件没有被压缩。
  • 在下载过程中,如果因为某种原因导致下载中断,则重新下载则会从上次中断的位置开始下载,不会重新下载该文件。

文件下载过程:

3.当客户端发送一个 post /updown http/1.1的请求时,表示上传文件給服务器,文件名和文件内容存放在http请求中的正文中。服务器收到该请求后,读取http请求中的文件名和文件数据,在备份目录下创建一个新的文件,并将该文件的数据放在这个新的文件中,添加新的文件信息到文件信息管理系统。

 上传功能:

上传文件后,热点时间过后,则上传的文件会从backdir中压缩到packdir下面。

 项目设计

github链接: https://github.com/sjp1237/cloudserver

以上是关于c++实战项目——云备份服务器的主要内容,如果未能解决你的问题,请参考以下文章

云平台项目实战(华为篇)

云原生之Docker实战使用Docker部署Duplicati备份工具

[Ansible实战]-ansible部署rsync全网备份项目

云备份项目

云备份项目

Linux-Rsync项目实战(详细) 备份全网服务器数据生产架构方案