Mysql自动备份,用MD5实现唯一备份_MySQL
程序员文章站
2022-05-19 09:06:15
...
一、备份数据库,命名为temp.sql,计算其MD5值(MD5计算方法见MD5.java)
String dos = "cmd /c mysqldump -uroot -pwugroup weixin> D:/mysql_back/temp.sql";// Dos命令
Runtime.getRuntime().exec(dos);// 执行dos命令
Thread.sleep(1000);// 睡眠一分钟,防止下面那条代码执行太快
File fileTemp = new File("D:/mysql_back/temp.sql");
String fileTempString = FileString.getFileString(fileTemp);
String fileTempMd5 = MD5.GetMD5Code(fileTempString);
二、遍历备份的目录,计算目录下文件的MD5值,分别与temp.sql比较
File dir = new File("D:/mysql_back"); File[] fs = dir.listFiles(); for (int i = 1; i四、如果有一样的则退出程序
if (fileMd5.equals(fileTempMd5)) { // 如果有和这个文件一样的文件那么就退出 System.exit(0); }
五、如果目录下所有文件都不一样则将temp改名为当前时间保存
String name = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()).toString();// 获取当前时间并格式化 File rename = new File(fileTemp.getParent() + File.separator+ "weixin_" + name + ".sql");// 如果没有这个文件那么将创建的temp文件重命名 // System.out.println(rename); fileTemp.renameTo(rename); System.exit(0);附代码:
package backup; import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; /** * * @author wuxingye * */ public class Main { /** * main函数 * * @param args * @throws IOException * @throws InterruptedException */ public static void main(String[] args) throws IOException, InterruptedException { String dos = "cmd /c mysqldump -uroot -pwugroup weixin> D:/mysql_back/temp.sql";// Dos命令 Runtime.getRuntime().exec(dos);// 执行dos命令 Thread.sleep(1000);// 睡眠一分钟,防止下面那条代码执行太快 File fileTemp = new File("D:/mysql_back/temp.sql"); String fileTempString = FileString.getFileString(fileTemp); String fileTempMd5 = MD5.GetMD5Code(fileTempString); // TODO Auto-generated method stub File dir = new File("D:/mysql_back"); File[] fs = dir.listFiles(); for (int i = 1; i FileString.javapackage backup; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; /** * 将File转换成String,文件转换成字符串 * * @author wuxingye */ public class FileString { /** * * @param file * @return 返回文件内容,以字符串方式返回 */ public static String getFileString(File file) { BufferedReader br = null; StringBuffer sb = null; try { br = new BufferedReader(new FileReader(file)); sb = new StringBuffer(); String str = null; // 一次读入一行,直到读入null为文件结束 while ((str = br.readLine()) != null) { if (!str.contains("Dump completed on")) { // 导出数据的文件最后一行为-- Dump completed on 2014-10-26 20:03:21 // 导出数据库的最后一行会有结束的时间,这样每次到处的文件MD5都不一样,所以去掉这一行 sb.append(str);// StringBuffer比String快 } } br.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e1) { } } } return sb.toString(); } }
MD5.javapackage backup; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * * 获取字符串对应的MD5值 * * @author 来自网络 * */ public class MD5 { // 全局数组 private final static String[] strDigits = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; public MD5() { } // 返回形式为数字跟字符串 /** * * @param bByte * @return 字节转换成字符串,十六进制字符串 */ private static String byteToArrayString(byte bByte) { int iRet = bByte; // System.out.println("iRet="+iRet); if (iRet
下一篇: 自学前端最基础知识小笔记