CloudBackUp

项目介绍

该项目可以完成对一个指定目录下的文件进行监控,并将数据上传到云服务器上进行备份和下载功能。

1. 客户端对指定目录进行监控,对每个文件生成etag信息,鉴别是否需要备份

2. 客户端将需要备份的文件基于http协议的PUT请求上传到服务器端

3. 服务端对于PUT上传的文件进行备份到指定目录下

4.服务端对于热度较低的文件进行压缩存储,并在文件被请求时进行解压缩处理

5. 整个通信的过程使用SSL/TLS加密传输

项目整体流程框架

服务端设计

1. 提供解析基于https协议的put请求,将文件数据进行备份

2. 提供浏览器能够查看服务器上文件信息功能

3. 提供浏览器能够下载服务器上文件功能

4. 提供对后台长时间无访问文件的压缩存储功能

服务端实现流程

1. 服务端每次启动从指定备份信息文件获取压缩存储的文件信息

2. 服务端定时将压缩存储的文件信息记录到文件中

3. 服务端定时对上传的文件进行判断是否时不常访问文件,进行压缩存储,并删除源文件

4. 向外提供获取备份文件列表信息

5. 向外提供读取文件数据功能(直接读取文件/先解压文件数据再读取)

客户端设计

1. 提供监控目录的功能,能够获取目录下文件信息,鉴别文件是否需要备份

2. 备份文件,基于HTTPS协议PUT请求,实现文件多线程分块上传功能

3. 文件的信息记录,便于文件是否需要备份的鉴别

客户端实现流程

1. 查看当前目录下是否有backup.list文件,获取文件中的备份文件etagmtime/size)信息

2. 打开指定目录,浏览目录内的文件信息;获取文件etag信息与记录信息进行比对,鉴别是否需要备份

3. 对需要备份的文件,创建https协议的put请求头信息;并且获取文件数据进行上传

4. 根据响应的状态,判断是否成功备份,更新文件名称对应的etag信息

新文件创建:当文件名在文件信息表中查找不到的情况 旧文件修改:当文件的etag与信息表中对应的的etag不同

 

项目测试

其中我使用的环境是VS2013加腾讯云的学生主机1核2G,1M带宽,电脑连接手机热点。

在多次测试中,测试数据如下

223M大小的单个文件,用时2:41

236M大小的多个文件,用时2:32

351M大小的多个文件,用时3:51

项目总结

在这个项目中,我熟悉了http服务器的搭建,以及用到了对于文件安全操作时加锁的操作,同时我也学习到了在处理一些文件的细节操作,在编写项目的过程中,我熟悉了TCP三次握手和四次挥手的过程,熟悉了HTTP请求报文和HTTP响应报文的格式,还了解了https是如何加密的,同样我也学会了使用wireshack抓包工具来抓包去分析错误信息。

 

最后附上具体代码实现 https://github.com/Johnson5218/CloudBackup.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值