day1
项目总纲
云备份
实现目标
搭建环境
词汇解释
项目总纲
云备份
自动将本地计算机上指定文件夹中需要备份的文件上传备份到服务器中。并且能够随时通过浏览器进行查看并且下载,其中下载过程支持断点续传功能,而服务器也会对上传文件进行热点管理,将非热点文件进行压缩存储,节省磁盘空间
这个云备份项目需要我们实现两端程序,其中包括部署在用户机的客户端程序,上传需要备份的文件,以及运行在服务器上的服务端程序,实现备份文件的存储和管理,两端合作实现总体的自动云备份功能。
1. 服务端程序负责功能
针对客户端上传的文件进行备份存储
能够对文件进行热点文件管理,对非热点文件进行压缩存储,节省磁盘空间。
支持客户端浏览器查看访问文件列表。
支持客户端浏览器下载文件,并且下载支持断点续传。
2. 服务端功能模块划分
数据管理模块:负责服务器上备份文件的信息管理。
网络通信模块:搭建网络通信服务器,实现与客户端通信。
业务处理模块:针对客户端的各个请求进行对应业务处理并响应结果。
热点管理模块:负责文件的热点判断,以及非热点文件的压缩存储。
3. 客户端程序负责功能
能够自动检测客户机指定文件夹中的文件,并判断是否需要备份
将需要备份的文件逐个上传到服务器
4. 客户端功能模块划分
数据管理模块:负责客户端备份的文件信息管理,通过这些数据可以确定一个文件是否需要备份。
文件检测模块:遍历获取指定文件夹中所有文件路径名称。
网络通信模块:搭建网络通信客户端,实现将文件数据备份上传到服务器
搭建环境
gcc升级7.3版本:
sudo yum install centos-release-scl-rh centos-release-scl// 安装语言信息 sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++ //安装高版本的gcc source /opt/rh/devtoolset-7/enable //加载配置文件 echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc //修改默认配置文件
查看gcc版本 :gcc -v
安装jsoncpp库:
sudo yum install epel-release sudo yum install jsoncpp-devel
查看json的下载路径:ls /usr/include/jsoncpp/json/
下载bundle数据压缩库
sudo yum install git //下载 git 工具 git clone https://github.com/r-lyeh-archived/bundle.git
下载 httplib 库
git clone https://github.com/yhirose/cpp-httplib.git
如果无法在shell访问github,我们可以去GitHub官网上下载这两个第三方库,下载至本地后,通过rz命令上传到服务器上。
词汇解释
断点续传功能
断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,如果碰到网络故障,可以从已经上传或下载的部分开始继续上传下载未完成的部分,而没有必要从头开始上传下载。
相当于你下一个大型游戏,下到一半没有流量了,可以回家连上wife之后从当前进度继续下载。
热点管理
在这里的解释就是,对一些经常被访问的文件进行处理,以便更好的进行访问,不常访问的文件进行压缩处理。