Springboot ruoyi配置mysql备份定时任务

一、RuoYiConfig.class 新增获取备份路径方法
public static String getDataBaseBackUp() {return getProfile() + "/dbBackUp";}
二、RyTask:新增备份数据库方法
mySqlDump方法:参数详见代码
package com.ruoyi.quartz.task;import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.system.OsInfo;
import cn.hutool.system.SystemUtil;
import com.ruoyi.common.config.RuoYiConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.io.File;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;/*** 定时任务调度测试** @author ruoyi*/
@Component("ryTask")
public class RyTask {/**** @param host:数据库Ip* @param port:数据库端口* @param username:数据库账号* @param password:数据库密码* @param databasename:数据库名称* @param backupNumStr:备份保留份数* @throws Exception*/public void mySqlDump(String host, String port, String username, String password, String databasename,String backupNumStr) throws Exception {String dir = RuoYiConfig.getDataBaseBackUp();if (!FileUtil.exist(dir)) {FileUtil.mkdir(dir);}String sqlName = DateUtil.format(new Date(), DatePattern.PURE_DATETIME_MS_PATTERN)+ ".sql";String sqlPathName = dir + File.separator + sqlName;if (FileUtil.exist(sqlPathName)) {System.out.println(sqlName + "文件名已存在,请更换");return;}//拼接cmd命令  windows下 cmd   Linux下 /bin/shProcess exec;OsInfo osInfo = SystemUtil.getOsInfo();//如果不能取得系统属性os.name(因为Java安全限制),则总是返回falseif(osInfo.isWindows()){exec = Runtime.getRuntime().exec("cmd /c mysqldump -h" + host + " -P" + port + " -u " + username + " -p" + password + " " + databasename + " > " + sqlPathName);} else {exec = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", "/usr/bin/mysqldump -h" + host + " -P" + port + " -u " + username + " -p" + password + " " + databasename + " > " + sqlPathName});}if (exec.waitFor() == 0) {System.out.println("数据库备份成功,备份路径为:" + sqlPathName);}//压缩String zipPathName = dir + File.separator + sqlName + ".zip";ZipUtil.zip(sqlPathName, zipPathName);//删除FileUtil.del(sqlPathName);//获取外部的备份保留份数int backupNum = 5;try {backupNum = NumberUtil.parseInt(backupNumStr);} catch (Exception e){System.out.println("backupNumStr非数字:"+backupNumStr);}//删除之前备份份数List<String> fileNames = FileUtil.listFileNames(dir);if(CollUtil.isNotEmpty(fileNames)){//从大到小排序fileNames = fileNames.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());for (int i = 0; i < fileNames.size(); i++) {//超过的份数全删除if(i>=backupNum){FileUtil.del(dir + File.separator + fileNames.get(i));}}}}
}

三、配置定时任务

其中7代表:备份保留的份数,默认是5份(假设传入的不能转成数字)

ryTask.mySqlDump('127.0.0.1','3306','数据库账号','数据库密码','数据库','7')

四、执行效果

方法调用hutool压缩方法、文件扫描、删除方法,测试均通过

上传路径都配置的:

/data/项目名(非中文)/uploadPath

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/86883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【动手学深度学习-Pytorch版】序列到序列的学习(包含NLP常用的Mask技巧)

序言 这一节是对于“编码器-解码器”模型的实际应用&#xff0c;编码器和解码器架构可以使用长度可变的序列作为输入&#xff0c;并将其转换为固定形状的隐状态&#xff08;编码器实现&#xff09;。本小节将使用“fra-eng”数据集&#xff08;这也是《动手学习深度学习-Pytor…

linux用户和权限命令学习记录

文章目录 版权声明root用户&#xff08;超级管理员&#xff09;su和exit命令sudo命令为普通用户配置sudo认证 用户、用户组管理用户组管理getent命令 查看权限控制认知权限信息 修改权限控制chmod修改文件、文件夹的权限权限的数字序号chown修改所属用户、用户组 版权声明 本博…

华为NFC设置教程(门禁卡/公交卡/校园卡等)

今天把华为NFC设置教程分享给大家 出门带门禁卡、校园卡、银行卡、身份证……东西又多&#xff0c;携带又麻烦&#xff0c;还容易搞丢&#xff0c;有没有一种方法可以把它们都装下&#xff1f;有&#xff01;只要一部手机&#xff0c;出门不带卡包&#xff0c;各种证件&#x…

机器学习第十课--提升树

一.Bagging与Boosting的区别 在上一章里我们学习了一个集成模型叫作随机森林&#xff0c;而且也了解到随机森林属于Bagging的成员。本节我们重点来学习一下另外一种集成模型叫作Boosting。首先回顾一下什么叫Bagging? 比如在随机森林里&#xff0c;针对于样本数据&#xff0c;…

如何通过axios拦截器,给除了登录请求以外,axios的所有异步请求添加JWT令牌!

在 Vue 项目中配置除了登录请求以外的所有请求的令牌&#xff0c;通常涉及到在请求头中添加令牌&#xff08;Token&#xff09;信息。这可以通过使用 Axios 或其他 HTTP 请求库来实现。以下是一般的步骤&#xff1a; 1. **安装 Axios**&#xff1a; 如果你还没有安装 Axios&a…

java 从字符串中 输出连续的整数

java 从字符串中 输出连续的整数 //编写程序&#xff0c;从键盘输入一个字符串&#xff0c;内有数字和非数字字符 // 如xy12ab93?5789$,连续的数字为一个整数。 // 例如&#xff1a;字符串中有3个整数&#xff1a;12 93 5786.统计整数个数&#xff0c;并依次输出 import java…

Java中的继承是什么?

在Java中&#xff0c;继承是一种面向对象编程的概念&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;继承另一个类&#xff08;称为父类或基类&#xff09;的属性和方法。通过继承&#xff0c;子类可以获得父类的属性和方法&#xff0c;并且可以添加自己的特…

使用命令行快速创建Vite项目

一、构建项目 在终端中使用如下命令行&#xff1a; npm create vite 二、定义项目名称 三、选择项目类型 Vanilla是我们常用的JavaScript&#xff0c;Vue和React是常用前端框架&#xff0c;可以根据自己的需要进行选择 通过上下键进行选择&#xff0c;按下回车进行确认 创建…

js 采集pcm,并封装为wav,包含重采样,提供下载

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>录制音频并下载为WAV文件</title…

docker容器安装MongoDB数据库

一&#xff1a;MongoDB数据库 1.1 简介 MongoDB是一个开源、高性能、无模式的文档型数据库&#xff0c;当初的设计就是用于简化开发和方便扩展&#xff0c;是NoSQL数据库产品中的一种。是最 像关系型数据库&#xff08;MySQL&#xff09;的非关系型数据库。 它支持的数据结构…

一种便捷的爬虫方法

发现了种快捷的爬虫方法 1.在“检查-Network”要模拟的post请求记录右键-Copy-Copy as cUrl(bash) 2.替换下面代码中文本内容&#xff0c;搞定 import uncurl import requestsresponseeval(uncurl.parse( curl http://xxxxx \-H Accept: application/json, text/plain, */* …

Neo4j图数据库_web页面关闭登录实现免登陆访问_常用的cypher语句_删除_查询_创建关系图谱---Neo4j图数据库工作笔记0013

由于除了安装,那么真实使用的时候,就是导入数据了,有了关系和节点的csv文件以后如果用 cypher进行导入数据和创建关系图谱,还有进行查询,以及如果导入错误如何清空,大概是这些 用的最多的,单独把这些拿进来,总结一下,用的会比较方便. 1.实现免登陆访问: /data/module/neo4j-…

Spring学习笔记6 Bean的实例化方式

Spring学习笔记5 GoF之工厂模式_biubiubiu0706的博客-CSDN博客 Spring为Bean提供了多种实例化方式,通常包括4中(目的:更加灵活) 1.通过构造方法实例化 2.通过简单工厂模式实例化 3.通过factory-bean实例化 4.通过FactoryBean接口实例化 新建模块 spring-005 依赖 <!--S…

结构体,联合体与位段

1.结构体的内存对齐(计算结构体的大小) 1.1 为什么需要结构体内存对齐? 原因1:平台原因 不是所有的硬件平台都能访问任意地址上的任意数据的&#xff1b;某些平台只能在某些地址处取得某些特定类型的数据&#xff0c;否则抛出硬件异常。 比如&#xff0c;当一个平台要取一个…

OpenCV项目开发实战之数码单反相机的技术方面介绍

在这篇文章中,我们将解释数码单反相机的各个技术方面。我们将解释焦距、光圈值、景深、光圈、快门速度、ISO 设置、图像稳定和自动包围曝光。 数码单反相机(或 DSLR – 数码、单反、镜头、反光)是一种数码相机,它使用反光镜机制将相机镜头发出的光线反射到光学取景器,或者…

35.浅谈贪心算法

概述 相信大家或多或少都对贪心算法有所耳闻&#xff0c;今天我们从一个应用场景展开 假设存在下面需要付费的广播台&#xff0c;以及广播台信号可以覆盖的地区。 如何选择最少的广播台&#xff0c;让所有的地区都可以接收到信号&#xff1f; 广播台覆盖地区k1北京、上海、天津…

Qt5开发及实例V2.0-第二十二章-Qt.Quick Controls 2新颖界面开发

Qt5开发及实例V2.0-第二十二章-Qt.Quick Controls 2新颖界面开发 第22章 Qt Quick Controls 2新颖界面开发22.1 Qt Quick Controls 2简介22.1.1 第一个Qt Quick Controls 2程序22.1.2 Qt Quick Controls 2程序的构成 22.2 Qt Quick Controls 2与1的比较22.2.1 ApplicationWindo…

紫光展锐6nm国产5G处理器T820_国产手机芯片5G方案

紫光展锐T820是一款采用先进6nm EUV工艺的芯片&#xff0c;采用134三丛集八核心CPU架构&#xff0c;由1个主频为 2.7GHz 的 Arm Cortex-A76 大核和 3个主频为2.3GHz 的Arm Cortex-A76大核以及4个主频为2.1GHz的 Arm Cortex-A55组成 &#xff0c;支持高达3MB 三级缓存&#xff0…

MySQL 篇

目录 1、数据库三范式 2、数据库事务的特性 3、MySQL数据库引擎 4、说说 InnoDB 与 MyISAM 的区别 5、索引是什么&#xff1f; 6、索引数据结构 7、MySQL 索引类型有哪些&#xff1f; 8、索引有什么优缺点&#xff1f; 9、索引设计原则 9、使用索引应该注意些什…

ubuntu 开启笔记本摄像头并修复画面颠倒问题

文章目录 基本环境状况&#xff1a; 没找到摄像头检查 opencv检查系统应用 键盘右侧&#xff0c;硬件层面开启摄像头画面镜像问题 基本环境 笔记本&#xff1a; 联想拯救者 系统&#xff1a; ubuntu 22.04 状况&#xff1a; 没找到摄像头 检查 opencv 使用 cv::VideoCaptu…