目录
1.认识云备份
介绍:云备份是一种通过云存储的方式,将个人数据的通讯录、短信、图片等资料备份在网络上面的技术。
特点:
-
备份数据更加安全:云备份将数据存储在远程服务器上,这些服务器通常配备有高级别的安全措施,如数据加密、防火墙等,以确保数据的安全性和完整性。与传统的本地备份相比,云备份更能防止数据丢失、损坏或被恶意访问。
-
支持多平台管理:云备份服务通常支持多种设备和操作系统,用户可以在不同的设备上访问和管理他们的备份数据。这种跨平台的能力使得用户能够更加方便地管理和保护他们的数据。
-
数据传输加密更放心:在将数据上传到云存储时,云备份服务通常会采用加密技术来保护数据的传输过程。这可以确保数据在传输过程中不会被窃取或篡改,从而增强用户对数据安全的信心。
优点:
-
可扩展性:云备份服务通常提供可扩展的存储空间,用户可以根据需要随时增加存储空间,以适应数据增长的需求。这种可扩展性使得云备份成为处理大量数据的理想选择。
-
节约成本:与传统的本地备份解决方案相比,云备份通常具有更低的成本。用户无需购买昂贵的硬件设备或雇佣专业人员来管理备份系统,只需支付云存储服务的费用即可。
-
不受空间和设备限制:云备份不受本地存储空间的限制,用户可以随时将数据备份到云端,而无需担心设备存储空间不足的问题。此外,用户还可以在不同的设备上访问他们的备份数据,无需担心数据迁移或同步的问题。
-
无需数据线或存储卡:使用云备份时,用户无需使用数据线将设备连接到电脑或存储卡来备份数据。这简化了备份过程,并减少了因使用数据线或存储卡而导致的数据丢失风险。
综上所述,云备份是一种安全、便捷且成本效益高的数据备份解决方案,适用于个人和企业用户。通过选择可靠的云备份服务,用户可以确保他们的数据安全、可访问且易于管理。
2.实现目标
云备份项目需要我们实现两端程序,即客户端与服务端。其中部署在用户机的程序为客户端程序,负责上传文件等;运行在服务器上的程序为服务端程序,负责备份文件的存储与管理。两端合作实现总体的自动云备份功能。
客户端通过网络把自己的a.txt云备份到我们的服务端,我们的服务端保存起来,并且提供可访问的服务,然后客户端可以通过浏览器来访问我们备份的文件a.txt。
我们这个项目是客户端在windows端环境,然后服务端在linux环境,客户端执行客户端程序之后会在当前目录生成一个文件夹,如果客户端想要云备份文件,就要把这个要上传的文件放到这个文件夹里面去,放进去后,客户端程序能够自动检测客户机指定文件夹中的文件,并判断是否需要备份(如果说和之前上传的一样,那就不备份了)
服务端接受到文件之后会把它放到一个特定目录里面,并且支持客户端来通过浏览器来访问或下载这个文件,如果下载过程中客户端网络异常导致下载终端,不必担心,我们的服务端还支持断点续传功能。此外,对于经常访问的文件(热点文件)服务端不做任何处理,但是对于不经常访问的文件(非热点文件),服务器会将其进行压缩处理,等到被访问的时候才会被解压处理。
3.服务端程序负责功能
- 针对客户端上传的文件进行备份存储;
- 能够对文件进行热点管理,对非热点文件(长时间无访问的文件)进行压缩存储,节省磁盘空间;
- 支持客户端浏览器查看访问文件列表;
- 支持客户端浏览器下载文件,并且下载支持断点续传。
4.服务端功能模块划分
- 数据管理模块:负责服务器上备份文件的信息管理;
- 网络通信模块:搭建网络通信服务,实现与客户端进行通信;
- 业务处理模块:针对客户端的各个请求(上传,列表,下载(断点续传))进行对应业务处理并响应结果;
- 热点管理模块:负责文件的热点管理,以及非热点文件(长时间无访问的文件)的压缩存储。
5.客户端程序负责功能
- 能够自动检测客户机指定文件夹中的文件,
- 判断文件是否需要备份,通常是新增文件(如果说和之前上传的一样,那就不备份了),已经备份过但是又修改的,上次上传后又修改过,但是间隔3秒钟都没有被修改的;
- 将需要备份的文件逐个上传到服务器。
6.客户端功能模块划分
- 数据管理模块:负责客户端备份的文件信息管理,通过这些数据可以确定一个文件是否需要备份;
- 文件检测模块:遍历获取指定文件夹中所有文件路径名称;
- 网络通信模块:搭建网络通信服务,实现将文件数据备份上传到服务器。
7.开发环境
- ubuntu20.04;
- vscode/vim;
- g++;
- Makefile;
8.环境准备
8.1.gcc版本
我们使用gcc9.4.0,也就是ubuntu20.04的gcc的默认版本
8.2.安装 jsoncpp 库
对于Ubuntu 20.04,要安装jsoncpp库,你可以使用以下步骤:
- 更新软件源:
sudo apt-get update
- 安装jsoncpp开发包:
Ubuntu 20.04中,jsoncpp的开发包名为libjsoncpp-dev。你可以使用以下命令来安装它:
sudo apt-get install libjsoncpp-dev
这个包包含了用于开发jsoncpp库的头文件和库文件。
- 验证安装:
安装完成后,你可以通过检查/usr/include/jsoncpp/目录来验证安装是否成功。这个目录应该包含jsoncpp的头文件。
ls /usr/include/jsoncpp/json/
- 使用jsoncpp:
在你的C++项目中,你可以通过包含头文件#include <jsoncpp/json/json.h>来使用jsoncpp库。在编译时,你需要链接jsoncpp库,这通常可以通过在编译命令中添加-ljsoncpp来实现。
8.3.下载bundle数据压缩库
这个我们要去github上面下载了,只不过我们不是通过浏览器下载到我们的windows桌面,然后通过rz命令上传到我们的linux机器里面
- 安装 git
sudo apt install git
接下来我们要去github里面下载(大家直接照做就行)
https://gitcode.com/gh_mirrors/bun/bundle?utm_source=csdn_github_accelerator&isLogin=1
git clone https://github.com/r-lyeh-archived/bundle.git
我们看到当前目录就多了一个目录——bundle,这里面就是我们的bundle数据压缩库
可以看到有相当多的文件 (注意:我这里只展示了一小部分)
8.4.下载 httplib 库
我们可以去这里下载:cpp-httplib.zip_免费高速下载|百度网盘-分享无限制
提取码: t5pu
在Ubuntu 20.04上解压一个名为cpp-httplib.zip的压缩文件,你可以使用内置的unzip工具。以下是详细的步骤:
- 更新你的系统(推荐):
sudo apt update
- 安装unzip工具(如果还没有安装的话):
sudo apt install unzip
- 导航到包含cpp-httplib.zip文件的目录:
你可以使用cd命令来更改当前目录。例如,如果文件在Downloads目录下,你可以输入:
cd ~/Downloads
- 解压文件:
使用unzip命令来解压文件:
unzip cpp-httplib.zip
- 验证解压结果:
你可以使用ls命令来查看解压后的文件或目录:
ls -l
你应该会在当前目录下看到解压后的文件或目录。
基于上面这个我们就可以解压了
unzip cpp-httplib.zip
这说明我们成功了