码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C++项目——云备份-①-项目介绍&环境搭建


    文章目录

    • 专栏导读
    • 1.什么是云备份
    • 2.实现目标
    • 3.服务端程序负责功能
    • 4.服务端功能模块划分
    • 5.客户端程序负责功能
    • 6.客户端功能模块划分
    • 开发环境
    • 环境搭建
      • 1. gcc 升级7.3版本
      • 2.安装 jsoncpp 库
      • 3.下载bundle数据压缩库
      • 4.下载 httplib 库

    专栏导读

    🌸作者简介:花想云 ,在读本科生一枚,C/C++领域新星创作者,新星计划导师,阿里云专家博主,CSDN内容合伙人…致力于 C/C++、Linux 学习。

    🌸专栏简介:本文收录于 C++项目——云备份

    🌸相关专栏推荐:C语言初阶系列、C语言进阶系列 、C++系列、数据结构与算法、Linux
    🌸项目Gitee链接:https://gitee.com/li-yuanjiu/cloud-backup

    在这里插入图片描述

    1.什么是云备份

    云备份指自动将本地计算机指定文件夹中需要备份的文件上传备份到远端服务器中。并且能够随时通过浏览器进行查看或下载,其中下载过程还支持断点续传功能。服务器会对上传的文件进行热点管理(经常被访问的文件称为热点文件),将非热点文件进行压缩存储,节省磁盘空间。

    在这里插入图片描述

    2.实现目标

    云备份项目需要我们实现两端程序,即客户端与服务端。其中部署在用户机的程序为客户端程序,负责上传文件等;运行在服务器上的程序为服务端程序,负责备份文件的存储与管理。两端合作实现总体的自动云备份功能。

    3.服务端程序负责功能

    • 针对客户端上传的文件进行备份存储;
    • 能够对文件进行热点管理,对非热点文件进行压缩存储,节省磁盘空间;
    • 支持客户端浏览器查看访问文件列表;
    • 支持客户端浏览器下载文件,并且下载支持断点续传。

    4.服务端功能模块划分

    • 数据管理模块:负责服务器上备份文件的信息管理;
    • 网络通信模块:搭建网络通信服务,实现与客户端进行通信;
    • 业务处理模块:针对客户端的各个请求进行对应业务处理并响应结果;
    • 热点管理模块:负责文件的热点管理,以及非热点文件的压缩存储。

    5.客户端程序负责功能

    • 能够自动检测客户机指定文件夹中的文件,并判断是否需要备份;
    • 将需要备份的文件逐个上传到服务器。

    6.客户端功能模块划分

    • 数据管理模块:负责客户端备份的文件信息管理,通过这些数据可以确定一个文件是否需要备份;
    • 文件检测模块:遍历获取指定文件夹中所有文件路径名称;
    • 网络通信模块:搭建网络通信服务,实现将文件数据备份上传到服务器。

    开发环境

    • CentOS 7;
    • vscode/vim;
    • g++;
    • Makefile;

    环境搭建

    1. gcc 升级7.3版本

    sudo yum install centos-release-scl-rh centos-release-scl
    sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++
    source /opt/rh/devtoolset-7/enable
    echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc
    
    • 1
    • 2
    • 3
    • 4
    • 检查是否升级成功
    $ g++ -v
    
    • 1

    在这里插入图片描述

    2.安装 jsoncpp 库

    sudo yum install epel-release
    sudo yum install jsoncpp-devel
    
    • 1
    • 2
    • 安装完成后

    在这里插入图片描述

    • 注意,centos版本不同有可能安装的jsoncpp版本不同,安装的头文件位置也就可能不同了。

    3.下载bundle数据压缩库

    • GitHub链接
    • 安装 git
    sudo yum install git
    
    • 1
    git clone https://github.com/r-lyeh-archived/bundle.git
    
    • 1

    4.下载 httplib 库

    • GitHub链接
    git clone https://github.com/yhirose/cpp-httplib.git
    
    • 1

    在这里插入图片描述

  • 相关阅读:
    【每日一题Day344】LC2512奖励最顶尖的 K 名学生 | 哈希表+排序
    J9数字论:数字行业L2是当下发展的中心
    动态加载sprite是multiple模式(即该sprite包含了很多小图)里的小图
    KubeSphere 社区双周报 | 功能亮点抢“鲜”看 | 2022-09-16
    win10系统下使用openvino部署yolov5模型
    Could not load dynamic library ‘libcudart.so.11.0‘; dlerror: libcudart.so.11.0:
    【行业科普】常见的边缘计算产品有哪些?主要应用于哪些场景?
    二叉树 | 迭代遍历 | leecode刷题笔记
    【SAP-ABAP】--MRKO隐式增强字段步骤
    http代理IP它有哪些应用场景?如何提升访问速度?
  • 原文地址:https://blog.csdn.net/gllll_yu/article/details/133935458
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号