需备份数据,java实现,将linux服务器的文件和数据库数据发邮件上,同时对大文件分割,该怎么做

需备份数据,java实现,将linux服务器的文件和数据库数据发邮件上,同时对大文件分割,该怎么做-182****65
182****65
擅长邻域:未填写

2020-10-13 23:10:33   261浏览 分类: Java

前几天接到一个需求:需备份软件,java实现,将linux服务器的文件和数据库发邮件上

用户的具体需求是这样的:

1.若使用java实现,则不需要考虑怎么让该程序自动运行的事情。因为我的java框架能够定时执行某个函数。
2.要求将所有文件(包括数据库)都放在一个压缩包中,传送到我指定的邮箱
3.要求当文件压缩后大于50mb时,则分成多个分包,每个包一个邮件发过来。
4.要求邮件名格式为 日期+“”数据备份“” 即可,如2020年1月3日数据备份。若有多个分包则邮件名为 2020年1月3日数据备份 1/3 2020年1月3日数据备份 2/3。。。。。
5.要求可以备份多个文件夹和指定的数据库
6.要求备份完成后,会自动将服务器上的压缩包删除,免得浪费服务器空间。

乍一看,不是特别难,但是如果代码都是自己手敲的话,其实要写的东西挺多的,所以说选对工具很重要。根据之前的经验,我立马想到一个比较常用的工具类,Hutool。对于maven构建的项目来说,只要在pom.xml文件中加入以下依赖就能应用Hutool这个工具了。

<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.15</version>
</dependency>
查看了Hutool的文档,利用它的工具类ZipUtil,就能够完成将文件夹压缩的功能,一句代码就解决了压缩文件的问题。同时Hutool还提供了FileUtil工具类,在文件处理上方便了许多。关于如何发送邮件,Hutool提供了MailUtil工具类,发邮件的问题又迎刃而解,这大大减少了我的工作量。

这样就剩下一个需求没有解决,就是当压缩过后的文件大于50M时,需要分割。对于这个问题,我也查了资料,发现zip4j这个工具类能提供了分卷压缩的功能,不过再三取舍之后,我决定还是自己写代码来解决这个问题。

其实这个问题不难,文件分割无非就是将一个大的文件变成小的文件,那么把文件变成字节流不就行了,从源文件读取规定大小的字节数写入到单个目标文件中这样就行了。最后将这些字节流重新合并后就能恢复到原来的状态。代码就不贴了,百度能够找到的。

就这样,解决了用户的需求。

好文章就要一起分享哦!分享海报

此处可发布评论

评论(0

暂无评论,快来写一下吧
客服QQ 1913284695