【文件增量备份系统】系统功能介绍与开源说明

文章目录

  • 系统介绍
  • 功能说明
    • 数据源增删改查
    • 数据备份目标目录增删改查
    • 备份
    • 查看任务的备份进度
    • 备份任务管理
    • 备份文件管理
    • 文件备份记录管理
    • 文件结构
    • 压缩
    • 清理
    • 忽略文件或目录
  • 测试
    • 备份测试
      • 备份
      • 创建新文件夹、新文件
      • 修改数据源中的数据
    • 文件结构同步测试
    • 忽略文件或目录测试
  • 系统技术栈
    • 后端项目
    • 前端项目
  • 启动方式
  • 系统现有不足
  • 关于开源
  • 演示视频

系统介绍

随着时代的发展,计算机相关技术日渐成熟,如今人们大部分数据存储在计算机中,许多数据非常珍贵,比如说学习编程的学生无法记住所有的技术如何使用,只能记得一个大概,因此大部分学生都会将自己学习的知识构建成一个知识网络存储在计算机中,倘若有一天电脑的固态坏了,里面的数据就很难再找回来,这样很多技术相当于白学。

为了避免这个悲剧的发生,我们需要经常对自己的重要数据进行备份。常见的备份方式是直接将计算机的数据备份到另一个固态硬盘中,因为两个固态硬盘同时损坏的概率是非常低的。但是如果直接将计算机的文件全部拷贝粘贴到硬盘中,这个效率会非常底下,因为很多文件距离上次备份可能是没有任何修改的,对这些没有修改过的文件进行备份,不止浪费时间,还会损伤硬盘的寿命。

为了解决这个问题,我开发了一个增量备份系统来辅助数据的备份,即将过往的备份信息存储到数据库中,在对文件执行备份之前,首先判断文件距上次备份是否有变动,如果有变动才进行备份,这样可以大大提高备份的效率。

功能说明

数据源增删改查

【文件增量备份系统】系统功能介绍与开源说明_第1张图片

增加数据源时,有两种备份类型可以选择:一是将数据源中的数据全部备份到每个备份目标目录中(简称全备份);二是将数据源中的数据分散备份到多个不同的备份目标目录中(简称分散备份)。此外,还可以选择是否对文件进行压缩,通过在备份时对文件进行压缩可以减少文件所占用的空间

【文件增量备份系统】系统功能介绍与开源说明_第2张图片

数据备份目标目录增删改查

在增加备份目标目录之前,需要先勾选数据源,这样才可以建立两者的关联关系

【文件增量备份系统】系统功能介绍与开源说明_第3张图片

备份

在勾选数据源之后,可以将数据源中的数据备份到备份目标目录中

【文件增量备份系统】系统功能介绍与开源说明_第4张图片

查看任务的备份进度

为了方便用户查看任务的备份进度,系统开发了任务备份进度查看功能。如果备份类型为全备份,则数据源和每个备份目标目录形成一个备份任务,这些备份任务会异步多线程同时执行;如果备份类型为分散备份,则一个数据源只对应一个备份任务

【文件增量备份系统】系统功能介绍与开源说明_第5张图片
同时任务备份结束之后,会给用户发送备份成功通知

【文件增量备份系统】系统功能介绍与开源说明_第6张图片

备份任务管理

可以查看过往创建的备份任务的备份情况,如备份文件数量、备份文件大小、备份时间和备份状态

备份文件管理

存储备份文件的目的是为了让用户知道每个文件的源路径和目标路径,此外,还可以查看文件的备份次数、上次备份的时间

文件备份记录管理

记录文件每次备份的备份信息,如文件修改时间、文件备份时间,MD5码用来判断相同大小的文件内容距离上次备份时是否被修改,因为同样的输入,生成的MD5码是不变的,通过将文件输入流作为输入生成MD5码再和数据库中的MD5码进行比对,即可判断文件是否被修改

文件结构

因为有时候用户会选择分散备份,这样文件会被分散备份到多个备份目标目录中

【文件增量备份系统】系统功能介绍与开源说明_第7张图片

为了让用户可以查看数据源原本的文件结构,系统会在备份的时候记录数据源的文件结构

【文件增量备份系统】系统功能介绍与开源说明_第8张图片
通过复制文件的备份目标路径,即可快速找到文件被备份到何处
【文件增量备份系统】系统功能介绍与开源说明_第9张图片

压缩

压缩后的文件后缀为.easyBackupZip

【文件增量备份系统】系统功能介绍与开源说明_第10张图片
【文件增量备份系统】系统功能介绍与开源说明_第11张图片
点击解压按钮,可以将压缩文件解压到压缩文件所在目录

【文件增量备份系统】系统功能介绍与开源说明_第12张图片
除此之外,也可以将压缩文件下载为解压后的文件

【文件增量备份系统】系统功能介绍与开源说明_第13张图片

清理

该功能是用来清理不必要的数据,例如本来数据源中有一个文件,这个文件被备份到目标目录中了,也在数据库中留下了备份的过程数据。但是后续从数据源中删除了该文件,认为该文件不再有用。使用清理功能可以从备份目标目录中将该文件删除,同时删除文件在数据库中留存的备份数据,减少数据库中的垃圾数据

【文件增量备份系统】系统功能介绍与开源说明_第14张图片

忽略文件或目录

在备份时,可能有的文件并不需要进行备份,如Java项目的.idea,Vue项目的node_modules,通过设置忽略文件或目录,系统在备份的时候会跳过相应的文件或目录

【文件增量备份系统】系统功能介绍与开源说明_第15张图片

测试

备份测试

备份

执行备份之后,备份目标目录的文件结构和数据源中的完全一致

创建新文件夹、新文件

在数据源中创建新的文件夹和文件,此时,数据源的文件结构和备份目标目录的文件结构不再一致

【文件增量备份系统】系统功能介绍与开源说明_第16张图片

执行备份之后,备份目标目录的文件结构重新和数据源的一致

【文件增量备份系统】系统功能介绍与开源说明_第17张图片

修改数据源中的数据

首先修改数据源中的文本数据

【文件增量备份系统】系统功能介绍与开源说明_第18张图片

此时,备份目标目录中的文本数据如下

【文件增量备份系统】系统功能介绍与开源说明_第19张图片

执行备份,备份目标目录中的文本数据被修改

【文件增量备份系统】系统功能介绍与开源说明_第20张图片

文件结构同步测试

当前文件结构
【文件增量备份系统】系统功能介绍与开源说明_第21张图片
从数据源中删除该文件
【文件增量备份系统】系统功能介绍与开源说明_第22张图片
文件结构也同步更新
【文件增量备份系统】系统功能介绍与开源说明_第23张图片

忽略文件或目录测试

【文件增量备份系统】系统功能介绍与开源说明_第24张图片

通过设置忽略目录idea和文件idea.txt之后,再进行备份,得到的备份结果如下

【文件增量备份系统】系统功能介绍与开源说明_第25张图片

系统技术栈

后端项目

  • SpringBoot
  • MybatisPlus
  • SQLite
  • Java
  • Websocket
  • 压缩、解压工具

前端项目

  • Vue
  • Element Plus
  • Axios
  • Vite
  • Websocket

启动方式

为了降低用户的使用门槛,系统数据库选用SQLite,因此用户无需安装并配置数据库。此外在将后端打成jar包之前,先整合了前端打包之后的文件,所以最终只需要启动jar包即可启动整个系统

【文件增量备份系统】系统功能介绍与开源说明_第26张图片
系统启动成功之后,访问localhost:8899即可

【文件增量备份系统】系统功能介绍与开源说明_第27张图片

系统现有不足

  • 文件压缩使用现成工具类GZIP进行,压缩较大的文件会出现失败,因此本系统只对10MB以下的文件进行压缩,这个参数可以在代码中进行修改
  • SQLite数据库在编译项目或者打包项目的时候,数据库会清空,目前还没有找到合适的解决方案,如果小伙伴们有解决方法,希望可以不吝赐教
  • 功能设计也可能有不合理的地方,或者有所欠缺,后续可能会根据大家的建议进行完善和补充
  • 系统还没有经过充足的测试,不敢保证bug完全不出现

关于开源

等系统进一步测试之后,再进行开源,如果现在想体验一下或者帮忙测试,请添加我微信(麻烦请注明来意,谢谢)

演示视频

我开发了一个数据增量备份系统

你可能感兴趣的:(Java开发,java,spring,mybatis,websocket,vue,sqlite)