0.什么是云备份?
开发一个可执行程序/软件,该软件能够⾃动将本地计算机上指定⽂件夹中需要备份的⽂件上传备份到服务器中。并且能够随时通过浏览器进⾏查看并下载,下载过程⽀持断点续传功能,同时服务器也对上传⽂件进⾏热点管理,将⾮热点⽂件进⾏压缩存储,节省磁盘空间。
【理解】:
- 开发一个客户端/软件,这个软件能把你电脑上某文件夹下的所有文件上传到云端。你可以通过浏览器查看并下载云端的文件到本地,下载过程⽀持断点续传。
- 开发一个服务端,服务端管理客户端上传的文件,压缩存储非热点文件,支持文件显示和下载。
服务端功能
- 接收并备份客户端上传的文件
- 热点文件管理(对长时间无访问的文件进行压缩存储)
- 支持客户端查看云备份文件的列表
- 支持客户端文件下载功能并支持断点续传
服务端模块
- 数据管理(备份文件信息,便于随时获取):都备份了哪些文件,是否被压缩,是否为热点文件,压缩文件压缩路径是哪里,压缩文件名称是什么。
- 网络通信(搭建⽹络通信服务器,实现与客户端的网络通信,支持客户端通过浏览器/网络 查看/下载云端文件)
- 业务处理,针对客⼾端的各个请求进⾏对应业务处理并响应结果。(支持客户端上传文件,显示云端文件列表,下载文件(断点续传))
- 热点文件管理(对长时间无访问文件进行压缩存储)
- 配置信息管理
客户端功能
- 监测指定文件夹中的文件(获取文件夹中有什么文件)
- 判断某一文件是否需要备份(新增文件需备份,已经备份过但是被修改 且3s内无再次修改需备份{如果3s内重复修改,则考虑是该文件在不断新增/删除数据,说明该文件不是“稳定”的,对于不稳定文件我们暂时不备份})
- 将需要备份的文件上传到服务器上
客户端模块
- 数据管理模块(备份文件信息:哪些文件被备份过了)
- 文件检测模块(监控指定的文件夹,获取其中文件信息,根据文件信息判断是需要被备份,未被备份则现场备份,被备份过了,则检测是否需要二次备份【根据修改间隔】)
- 网络通信:搭建⽹络通信客⼾端,将需要备份的文件数据上传到服务器。
1.搭建环境
gcc版本7.3+
- 更新软件包列表:sudo apt update
- 安装或升级GCC:
sudo apt install gcc
sudo apt install gcc-12 g+±12
jsoncpp库
- 更新软件源:sudo apt-get update
- 安装libjsoncpp-dev:sudo apt-get install libjsoncpp-dev
bundle数据压缩库
git clone https://github.com/r-lyeh-archived/bundle.git
httplib库
git clone https://github.com/yhirose/cpp-httplib.git