Analisando código de Backup dos bancos de dados

Galera, achei um código que foi utilizado para realizar backup dos bancos de dados existentes do mySql.

package bkp;

import java.util.*;
import java.io.File;

public class MySQLBackup {

  // Constantes da classe
  private static String VERSION = "4.0.3";
  
  private static String SEPARATOR = File.separator;
  
  private static String MYSQL_PATH ="C:" + SEPARATOR +
                                    "Arquivos de programas" + SEPARATOR +
                                    "MySQL" + SEPARATOR +
                                    "MySQL Server 5.7" + SEPARATOR +
                                    "bin" + SEPARATOR;

  private static String PRESENTATION =
    "==========================================================\n" +

    "  Backup do banco de dados MySQL - Versao " + VERSION + "\n" +

    "  Autor: Marcelo Carvalho Pinto da Cunha\n\n" +

    "  Desenvolvido em 07/09/2009\n\n" +

    "  MarcWare Software, 2009-2012\n" +

    "==========================================================\n\n";
  
  // Lista dos bancos de dados a serem "backupeados"; se desejar adicionar mais,

  // basta colocar o nome separado por espaços dos outros nomes

  private static String DATABASES = "db_cesmg";
  
  private List<String> dbList = new ArrayList<>();

  public MySQLBackup() {

    String command = MYSQL_PATH + "mysqldump.exe";
    String[] databases = DATABASES.split(" ");

    for (int i = 0; i < databases.length; i++)
      dbList.add(databases[i]);

    // Mostra apresentação
    System.out.println(PRESENTATION);
    System.out.println("Iniciando backups...\n\n");

    // Contador
    int i = 1;

    // Tempo
    long time1, time2, time;

    // Início
    time1 = System.currentTimeMillis();

    for (String dbName : dbList) {

      ProcessBuilder pb = new ProcessBuilder(

        command,

        "--user=root",

        "--password=root",

        dbName,
        "--result-file=" + "." + SEPARATOR + "Backup" + SEPARATOR + dbName + ".sql");

      try {

        System.out.println("Backup do banco de dados (" + i + "): " + dbName + " ...");

        pb.start();
      }
      catch (Exception e) {
        e.printStackTrace();
      }
      i++;
    }

    // Fim
    time2 = System.currentTimeMillis();

    // Tempo total da operação
    time = time2 - time1;

    // Avisa do sucesso
    System.out.println("\nBackups realizados com sucesso.\n\n");

    System.out.println("Tempo total de processamento: " + time + " ms\n");

    System.out.println("Finalizando...");

    try {

      // Paralisa por 2 segundos
      Thread.sleep(2000);
    }
    catch (Exception e) {}

    // Termina o aplicativo
    //System.exit(0);

  }

 

  public static void main(String[] args) {

    MySQLBackup app = new MySQLBackup();
    
  } 

}

Executei o código com o nome de um banco que preciso automatizar o backup e não consigo encontrar o arquivo gerado que seria db_cesmg.sql, o que pode estar errado nesse código? alguém pode testar por favor?

Está executando em linux ou windows?
Já verificou se não está dando erro?

Essa parte do seu comando não condiz com oq vc espera.
Esse SEPARATOR é inútil, pode sempre utilizar /

Eu testei no windows, o compilador não gera nenhum erro de execução.

É um comando externo que vc está rodando, pra ver se deu erro vc precisa fazer a leitura do retorno.

Desculpe a dúvida, mas como vou fazer isso?

1 curtida