Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package l2f.gameserver.dao;
- import l2f.gameserver.ConfigHolder;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import java.io.File;
- import java.io.IOException;
- import java.text.SimpleDateFormat;
- import java.util.Arrays;
- import java.util.Calendar;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public final class DatabaseBackupManager
- {
- private static final Logger LOG = LoggerFactory.getLogger(DatabaseBackupManager.class);
- private static final Pattern DATABASE_NAME_PATTERN = Pattern.compile("jdbc:mysql://localhost/(.+?)\\?(.+?)");
- public static String doBackup(boolean logToConsole)
- {
- String databaseName = getDatabaseName();
- if(databaseName == null)
- {
- String error = "Backup: Error while getting Database Name!";
- if(logToConsole)
- LOG.error(error);
- return error;
- }
- String path = getPath(databaseName);
- if(path == null)
- {
- String error = "Error while creating Backup File!";
- if(logToConsole)
- LOG.error(error);
- return error;
- }
- String pathToDump = ConfigHolder.getString("MySqlDumpPath");
- if(!pathToDump.isEmpty())
- pathToDump += "\\";
- String cmd = pathToDump + "mysqldump -u" + ConfigHolder.getString("Login") + " -p" + ConfigHolder.getString("Password") + " " + databaseName + " -r " + path;
- return executeCMD(cmd, logToConsole);
- }
- private static String executeCMD(String cmd, boolean logToConsole)
- {
- try
- {
- if(logToConsole)
- LOG.info("Executing CMD: " + cmd);
- Process runtimeProcess = Runtime.getRuntime().exec(cmd);
- int processComplete = runtimeProcess.waitFor();
- String returnMsg;
- if (processComplete == 0)
- {
- returnMsg = "Backup finished successfully!";
- if(logToConsole)
- LOG.info(returnMsg);
- }
- else
- {
- returnMsg = "Backup Failed! Code: " + processComplete;
- if(logToConsole)
- LOG.info(returnMsg);
- }
- return returnMsg;
- }
- catch (IOException | InterruptedException ex)
- {
- LOG.error("Error while making Backup!", ex);
- return ex.getMessage() + " Error!";
- }
- }
- private static String getDatabaseName()
- {
- Matcher m = DATABASE_NAME_PATTERN.matcher(ConfigHolder.getString("URL"));
- if(m.find())
- {
- return m.group(1);
- }
- return null;
- }
- private static String getPath(String databaseName)
- {
- Calendar c = Calendar.getInstance();
- String folderPath = new File("").getAbsolutePath() + "/log/backups";
- new File(folderPath).mkdir();
- SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd_HH.mm");
- String formatted = format1.format(c.getTime());
- return folderPath + "/" + databaseName + "_" + formatted + ".sql";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement