背景
本来准备下个月MySQL学的差不多了再开项目的,
结果因为种种原因,
不得不提前做一个项目。
但我MySQL没学多少,怎么办呢?
那就做个用不到MySQL的项目!
这就是今天给大家介绍的,云备份。
有C++基础、Linux系统编程、网络编程基础就能做。
项目认识
这个项目的作用,非常简单,
就是把指定文件夹中的本地文件备份到服务器上,
并且可以做到:
通过浏览器进行文件查看与下载,
下载时支持断点续传。
而服务器则可以把很久没用的文件压缩,
节省空间。(热文件管理)
具体怎么实现呢?
先把大致的功能列出来,
服务端功能:
- 支持客户端文件上传
- 支持客户端查看已备份文件
- 支持客户端下载备份文件
- 压缩长期无访问的文件
客户端功能:
- 判断指定文件夹中的文件是否需要备份
- 逐个上传需要备份的文件
那么,上传文件下载文件等等,
都涉及网络数据传输吧?
那么你得对数据序列化和反序列化吧?
你也得支持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
希望本篇文章对你有所帮助!并激发你进一步探索编程的兴趣!
本人仅是个C语言初学者,如果你有任何疑问或建议,欢迎随时留言讨论!让我们一起学习,共同进步!