123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package com.example.fms.common.utils;
- import cn.hutool.core.io.FileUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.boot.system.ApplicationHome;
- import org.yaml.snakeyaml.Yaml;
- import java.io.File;
- import java.io.InputStream;
- /**
- * @Author xiexiang
- * @Date 2023/5/31
- */
- @Slf4j
- public class BackupUtils {
- private final static String BACKUP_CONFIG = "backup-config.yml";
- private static Backup getBackupConfig() {
- try {
- ApplicationHome ah = new ApplicationHome(BackupUtils.class);
- File file = ah.getSource();
- String rootPath = file.getParentFile().toString() + FileUtils.FILE_SEPARATOR + BACKUP_CONFIG;
- Yaml yaml = new Yaml();
- InputStream in = FileUtil.getInputStream(rootPath);
- Backup backup = yaml.loadAs(in, Backup.class);
- if (in != null) {
- in.close();
- }
- return backup;
- } catch (Exception e) {
- e.printStackTrace();
- return null;
- }
- }
- public static void main(String[] args) {
- System.out.println(getBackupConfig());
- }
- public void run() {
- Backup backup = getBackupConfig();
- if (backup == null) {
- log.info("数据库备份配置文件不存在");
- return;
- }
- log.info("数据库备份配置文件:{}", backup);
- if (backup.isEnable()) {
- String path = FileUtils.getStaticPath(FileUtils.BACKUP_FILE);
- String fileName = DateUtils.getNowTimeFormat(DateUtils.YYYYMMDDHHMMSS) + ".sql";
- try {
- String cmd = String.format("mysqldump --skip-opt -h%s -P%s -u%s -p%s %s > %s", backup.getHost(), backup.getPort(), backup.getUsername(), backup.getPassword(), backup.getDb(), path + FileUtils.FILE_SEPARATOR + fileName);
- String[] command;
- if (backup.getOs() == 0) {
- command = new String[]{"cmd", "/c", String.valueOf(cmd)};
- } else {
- command = new String[]{"/bin/sh", "-c", String.valueOf(cmd)};
- }
- Runtime.getRuntime().exec(command);
- log.info("备份数据库成功");
- } catch (Exception e) {
- e.printStackTrace();
- log.error("备份数据库失败");
- }
- }
- }
- public static class Backup {
- private String host;
- private String port;
- private String db;
- private String username;
- private String password;
- private int os;
- private boolean enable;
- @Override
- public String toString() {
- return "Backup{" +
- "host='" + host + '\'' +
- ", port='" + port + '\'' +
- ", db='" + db + '\'' +
- ", username='" + username + '\'' +
- ", password='" + password + '\'' +
- ", os=" + os +
- ", enable=" + enable +
- '}';
- }
- public boolean isEnable() {
- return enable;
- }
- public void setEnable(boolean enable) {
- this.enable = enable;
- }
- public String getHost() {
- return host;
- }
- public void setHost(String host) {
- this.host = host;
- }
- public String getPort() {
- return port;
- }
- public void setPort(String port) {
- this.port = port;
- }
- public String getDb() {
- return db;
- }
- public void setDb(String db) {
- this.db = db;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public int getOs() {
- return os;
- }
- public void setOs(int os) {
- this.os = os;
- }
- }
- }
|