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

博客主页:【夜泉_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语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!

相关推荐
誰能久伴不乏34 分钟前
桌面客户端的运行日志系统:SQLite 分块 + 独立写线程 + 文本降级
数据库·c++·qt·架构·sqlite
readhere9 小时前
从ZYNQ7000开发板,学会启动嵌入式Linux系统——入门学习:EBAZ4205篇目录
linux·启动·嵌入式linux·zynq7000·ebaz4205
打工仔折腾 AI10 小时前
在 Ubuntu ARM64 部署 Q1 V3.0 MuJoCo 模型:加载、单步推理与执行器响应解析
linux·运维·人工智能·python·深度学习·ubuntu·性能优化
yyuuuzz10 小时前
跨境站点日志时区混乱的排查记录
运维·服务器·网络·云计算·aws·1024程序员节
choumin10 小时前
C++中万能引用与std::forward的作用和用法
c++·万能引用·std forward
‎ദ്ദിᵔ.˛.ᵔ₎10 小时前
关于Linux 线程局部存储的认识
linux·运维
GlobalInfo10 小时前
全球及中国风电叶片检测机器人行业研究报告(2026版):市场现状、行业前景与占有率分析
运维·网络·人工智能·机器人
下一站春风里11 小时前
位运算完整学习笔记:按位与(&)+ 异或(^)
开发语言·c++·算法
运维行者_12 小时前
网络监控工具怎么选?从设备监控到智能运维的能力清单
运维·服务器·开发语言·网络·人工智能·支持向量机·php
小小de风呀12 小时前
de风——【从零开始学习Linux】(九):进程基础 —— 从冯诺依曼体系到 fork 创建进程
linux·学习