文章目录
专栏导读
1.什么是云备份
云备份指自动将本地计算机指定文件夹中需要备份的文件上传备份到远端服务器中。并且能够随时通过浏览器进行查看或下载,其中下载过程还支持断点续传功能。服务器会对上传的文件进行热点管理(经常被访问的文件称为热点文件),将非热点文件进行压缩存储,节省磁盘空间。
2.实现目标
云备份项目需要我们实现两端程序,即客户端与服务端。其中部署在用户机的程序为客户端程序,负责上传文件等;运行在服务器上的程序为服务端程序,负责备份文件的存储与管理。两端合作实现总体的自动云备份功能。
3.服务端程序负责功能
- 针对客户端上传的文件进行备份存储;
- 能够对文件进行热点管理,对非热点文件进行压缩存储,节省磁盘空间;
- 支持客户端浏览器查看访问文件列表;
- 支持客户端浏览器下载文件,并且下载支持断点续传。
4.服务端功能模块划分
- 数据管理模块:负责服务器上备份文件的信息管理;
- 网络通信模块:搭建网络通信服务,实现与客户端进行通信;
- 业务处理模块:针对客户端的各个请求进行对应业务处理并响应结果;
- 热点管理模块:负责文件的热点管理,以及非热点文件的压缩存储。
5.客户端程序负责功能
- 能够自动检测客户机指定文件夹中的文件,并判断是否需要备份;
- 将需要备份的文件逐个上传到服务器。
6.客户端功能模块划分
- 数据管理模块:负责客户端备份的文件信息管理,通过这些数据可以确定一个文件是否需要备份;
- 文件检测模块:遍历获取指定文件夹中所有文件路径名称;
- 网络通信模块:搭建网络通信服务,实现将文件数据备份上传到服务器。
开发环境
- CentOS 7;
- vscode/vim;
- g++;
- Makefile;
环境搭建
1. gcc 升级7.3版本
sudo yum install centos-release-scl-rh centos-release-scl
sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++
source /opt/rh/devtoolset-7/enable
echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc
- 检查是否升级成功
$ g++ -v
2.安装 jsoncpp 库
sudo yum install epel-release
sudo yum install jsoncpp-devel
- 安装完成后
- 注意,centos版本不同有可能安装的jsoncpp版本不同,安装的头文件位置也就可能不同了。
3.下载bundle数据压缩库
- GitHub链接
- 安装 git
sudo yum install git
git clone https://github.com/r-lyeh-archived/bundle.git
4.下载 httplib 库
git clone https://github.com/yhirose/cpp-httplib.git