小沐云笔记
文章目录
(一)项目概述
为了方便平时做的笔记及时保存。该项目实现了对文件的自动上传及浏览下载。
该项目包含一个 linux 下的服务器端,以及一个 windows 下的客户端。
windows下的客户端对指定的一个文件夹进行监控,将修改/新建的文件自动上传备份到服务器上,然后可以通过浏览器查看/下载这个文件信息。
linux下的服务端,会对备份的文件进行热点判断,非热点文件进行压缩存储,提高磁盘利用率。
(二)模块设计及实现
该项目一共包含2个大模块。分别是:服务端、客户端。
服务端又分为3个小模块。分别是: (1)数据管理模块。(2)文件压缩模块。(3)网络通信模块。
客户端分为2个小模块。分别是: (1)数据管理模块。(2)目录监控模块。(3)网络通信模块。
1. Linux服务端。
1.1数据管理模块。
用一个哈希结构存储文件名,和对应的压缩文件名(默认两者相等)。通过两者是否相等来判断文件是否被压缩。并返回给非热点压缩模块进行压缩。
1.2非热点文件压缩模块。
当数据管理模块返回一个未压缩文件列表时。通过文件的最后一次访问时间和当前时间的差值是否大于基准时间值,来判断是否是热点文件。如果是,则压缩,并更新文件信息。
1.网络通信模块。
搭建HTTP服务器。针对客户端不同的请求,去执行相应的回调函数。处理相应的业务。
2.windows客户端。
2.1数据管理模块。
管理指定目录下的文件信息(etag-最后一次修改时间,文件大小),管理两个数据,<文件名,文件etag信息>。
2.2目录监控模块。
读取目录下所有文件,每个文件都计算一下文件的etag信息,通过文件名到数据管理对象中查找原有etag信息,如果没有这个信息,则表示这是一个新文件,需要进 行备份。如果有原有etag信息,则对新计算的etag和原有的etag进行比对,不相等则认为修改过,需要备份;否则不需要备份
另外,通过目录监控模块获取到需要备份的文件列表,搭建http客户端逐个上传文件即可上传完毕后,更新数据对象的etag信息。
3.附加模块
3.1文件读取写入工具及压缩解压缩工具
3.2 html网页
(三)视频演示
详情见如下链接:
http://m.youku.com/v_show/id_XNDgxMDkwMDc0MA==.html?pgcpgcid=UNzc5OTMyODQ0OA%3D%3D&sharekey=25bdd0120d0c5b871910df2ea37097998
(四)源代码
见如下链接:
https://github.com/xiaomu00/Project/tree/master/%E5%B0%8F%E6%B2%90%E4%BA%91%E7%AC%94%E8%AE%B0