项目日记 -云备份 -项目认识与环境搭建

博客主页:【夜泉_ly

本文专栏:【项目日记-云备份

欢迎点赞👍收藏⭐关注❤️

目录

背景

本来准备下个月MySQL学的差不多了再开项目的,

结果因为种种原因,

不得不提前做一个项目。

但我MySQL没学多少,怎么办呢?

那就做个用不到MySQL的项目!

这就是今天给大家介绍的,云备份。

有C++基础、Linux系统编程、网络编程基础就能做。

项目认识

这个项目的作用,非常简单,

就是把指定文件夹中的本地文件备份到服务器上,

并且可以做到:

通过浏览器进行文件查看与下载

下载时支持断点续传

而服务器则可以把很久没用的文件压缩,

节省空间。(热文件管理

具体怎么实现呢?

先把大致的功能列出来,
服务端功能:

  1. 支持客户端文件上传
  2. 支持客户端查看已备份文件
  3. 支持客户端下载备份文件
  4. 压缩长期无访问的文件

客户端功能:

  1. 判断指定文件夹中的文件是否需要备份
  2. 逐个上传需要备份的文件

那么,上传文件下载文件等等,

都涉及网络数据传输吧?

那么你得对数据序列化和反序列化吧?

你也得支持HTTP协议吧?

另外,对于热文件的管理,

你也得有文件压缩和管理的程序吧?

这些都要手写吗?当然不,

这些我们都用第三方库。

是否可以自己实现这些功能?

为什么不自己实现?

首先,从技术上讲,当然可以自己实现。

比如我们可以手搓 json 解析器,

或者自主实现 HTTP(这个说不定还真可以)。

但是,对于目前的项目而言,

没有必要。

这些第三方库都是大佬们写的,

而且已经做了大量优化,

我们专注自己项目的核心功能就行,

底层,嗯,可以去看看源码,了解它的内部实现,

手搓就免了。

环境搭建

那么接下来,我们开始搭环境吧。

现在我已经有的:

  • Ubuntu 22.04.4
  • g++ 11.4.0
  • vscode

还差三个第三方库:jsoncpp、httplib、bundle(一个数据压缩库)

安装 jsoncpp

先更新包列表:

复制代码
sudo apt update

然后安装:

复制代码
sudo apt install libjsoncpp-dev

如果出现这个界面:

这个界面显示的是在Ubuntu中安装或更新某个软件包时,

系统提示你某些服务使用了过时的库,

需要重新启动。

这种操作一般是安全的,

重启服务有助于确保更新的库生效。

然后,具体如何操作呢?
上下箭头键 选服务
空格键 确认/取消 选中服务
Tab键 把光标移动到 <Ok>
回车键 确认

dpkg -l | grep libjsoncpp 检查是否安装成功。

复制代码
root@hcss-ecs-0f5a:/# dpkg -l | grep libjsoncpp
ii  libjsoncpp-dev:amd64                   1.9.5-3                                 amd64        library for reading and writing JSON for C++ (devel files)
ii  libjsoncpp25:amd64                     1.9.5-3                                 amd64        library for reading and writing JSON for C++

如果想要 卸载 jsoncpp:

卸载 libjsoncpp-dev 包:

复制代码
sudo apt remove libjsoncpp-dev

完全卸载,包括配置文件:

复制代码
sudo apt purge libjsoncpp-dev

清除不用的依赖包:

复制代码
sudo apt autoremove

同样,用 dpkg -l | grep libjsoncpp 检查,

如果没有输出,

说明 jsoncpp 已经被成功卸载。

下载 httplib

直接 git clone 就行:

复制代码
git clone https://github.com/yhirose/cpp-httplib.git

github。。可能有点慢。

不行的话就直接用浏览器:cpp-httplib

下载 bundle

同上:

复制代码
git clone https://github.com/r-lyeh-archived/bundle.git

bundle


希望本篇文章对你有所帮助!并激发你进一步探索编程的兴趣!

本人仅是个C语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!

相关推荐
银河麒麟操作系统4 分钟前
【银河麒麟高级服务器操作系统】服务器外挂存储ioerror分析及处理分享
linux·运维·服务器
某不知名網友10 分钟前
Linux_进程退出与进程等待
linux·运维·服务器
程序员JerrySUN16 分钟前
驱动开发硬核特训 · Day 28(上篇):pinctrl 子系统详解与实战分析
linux·驱动开发
拾忆-eleven18 分钟前
C++算法(19):整数类型极值,从INT_MIN原理到跨平台开发实战
数据结构·c++·算法
鸡哥爱技术37 分钟前
网工实验——OSPF配置
网络·智能路由器
Hxyle1 小时前
c++设计模式
开发语言·c++·设计模式
@CLoudbays_Martin111 小时前
CF后台如何设置TCP 和 UDP 端口?
大数据·运维·服务器·网络·数据库
chennalC#c.h.JA Ptho1 小时前
Centos系统详解架构详解
linux·经验分享·笔记·系统架构·系统安全
神仙别闹2 小时前
基于QT(C++)实现(图形界面)校园导览系统
数据库·c++·qt
明月看潮生2 小时前
青少年编程与数学 02-018 C++数据结构与算法 25课题、图像处理算法
c++·图像处理·算法·青少年编程·编程与数学