From 5fea45398f0fa88fef4008e6ec9443eef3d515d2 Mon Sep 17 00:00:00 2001 From: 杜洪波 <1074825718@qq.com> Date: 星期四, 19 六月 2025 13:51:28 +0800 Subject: [PATCH] 系统备份(日志版,读取最后次成功的日志时间,进行增量备份) --- src/main/java/com/product/system/backup/service/SystemBackupService.java | 55 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 43 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/product/system/backup/service/SystemBackupService.java b/src/main/java/com/product/system/backup/service/SystemBackupService.java index c307f31..b9cb749 100644 --- a/src/main/java/com/product/system/backup/service/SystemBackupService.java +++ b/src/main/java/com/product/system/backup/service/SystemBackupService.java @@ -71,22 +71,15 @@ // 鑾峰彇绯荤粺鏃堕棿 Date finalTime = new Date(); Date startTime = null; - // 鑾峰彇绯荤粺澶囦唤鍛ㄦ湡(鍒嗛挓) - int backupCycle = Integer.valueOf(Global.getSystemConfig("SYSTEM_BACK_CYCLE", "1440")); // 鑾峰彇绯荤粺鏈�澶у浠芥椂闂� StringBuilder sbSql = new StringBuilder(); - sbSql.append("SELECT TIMESTAMPDIFF(MINUTE, end_time, ?) AS diff_minutes,end_time \n"); + sbSql.append("SELECT end_time \n"); sbSql.append("FROM product_sys_backup_log \n"); sbSql.append("WHERE backup_status = 1 \n"); sbSql.append("ORDER BY end_time DESC \n"); sbSql.append("LIMIT 1 \n"); - FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {standardTimeFormat.format(finalTime)}, false); - if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("diff_minutes"))) { - Integer diffMinutes = fseMaxLogTime.getInteger("diff_minutes"); - if (diffMinutes < backupCycle) { - // 灏忎簬澶囦唤鍛ㄦ湡锛屼笉澶囦唤 - return ; - } + FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {}, false); + if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("end_time"))) { startTime = fseMaxLogTime.getDate("end_time"); } // 鍒濆澶囦唤鏃ュ織鏁版嵁 @@ -104,6 +97,43 @@ // 淇濆瓨鏃ュ織 baseDao.saveFieldSetEntity(fseBackLog); } +// public void systemBackupInit() { +// // 鑾峰彇绯荤粺鏃堕棿 +// Date finalTime = new Date(); +// Date startTime = null; +// // 鑾峰彇绯荤粺澶囦唤鍛ㄦ湡(鍒嗛挓) +// int backupCycle = Integer.valueOf(Global.getSystemConfig("SYSTEM_BACK_CYCLE", "1440")); +// // 鑾峰彇绯荤粺鏈�澶у浠芥椂闂� +// StringBuilder sbSql = new StringBuilder(); +// sbSql.append("SELECT TIMESTAMPDIFF(MINUTE, end_time, ?) AS diff_minutes,end_time \n"); +// sbSql.append("FROM product_sys_backup_log \n"); +// sbSql.append("WHERE backup_status = 1 \n"); +// sbSql.append("ORDER BY end_time DESC \n"); +// sbSql.append("LIMIT 1 \n"); +// FieldSetEntity fseMaxLogTime = baseDao.getFieldSetEntityBySQL(sbSql.toString(), new Object[] {standardTimeFormat.format(finalTime)}, false); +// if(fseMaxLogTime != null && !StringUtils.isEmpty(fseMaxLogTime.getString("diff_minutes"))) { +// Integer diffMinutes = fseMaxLogTime.getInteger("diff_minutes"); +// if (diffMinutes < backupCycle) { +// // 灏忎簬澶囦唤鍛ㄦ湡锛屼笉澶囦唤 +// return ; +// } +// startTime = fseMaxLogTime.getDate("end_time"); +// } +// // 鍒濆澶囦唤鏃ュ織鏁版嵁 +// FieldSetEntity fseBackLog = new FieldSetEntity("product_sys_backup_log"); +// fseBackLog.setValue("start_time", startTime); +// fseBackLog.setValue("end_time", finalTime); +// +// // 鎵ц澶囦唤 +// boolean flag = backupProcess(startTime, finalTime); +// if (flag) { +// fseBackLog.setValue("backup_status", 1); +// } else { +// fseBackLog.setValue("backup_status", 0); +// } +// // 淇濆瓨鏃ュ織 +// baseDao.saveFieldSetEntity(fseBackLog); +// } /** @@ -274,12 +304,13 @@ } else { log.writeInfo("銆愬浠芥暟鎹簱銆戞暟鎹簱澶囦唤澶辫触锛岄��鍑虹爜: " + exitCode, BackupLogger.ERROR_TYPE); } + return true; } catch (Exception e) { e.printStackTrace(); log.writeInfo("銆愬浠芥暟鎹簱銆戞暟鎹簱澶囦唤澶辫触锛�" + e.getMessage(), BackupLogger.ERROR_TYPE); + backupFile.delete(); return false; - } - return true; + } } /** -- Gitblit v1.9.2