Problemas com metodo para Restaurar backup no Linux

Galera, estou com o seguinte problema, estou criando uma aplicaçao java, usando o Banco de dados Mysql, agora estou fazendo um metodo para fazer a restauraçao backup dos dados.

Estou criando a aplicação para rodar tanto no Linux quanto no Windows. Como uso o Linux estou fazendo para ele primeiro.

O codigo do meu metodo é o seguinte:

   public void restauraBackup(String url){
           try{
               if (System.getProperty("os.name").equals("Linux")) {
                   props.load(new FileInputStream(dir+"/conf.ini"));
               } else {
                   props.load(new FileInputStream(dir+"\conf.ini"));
               }
               String host = props.getProperty("host");
               String senha = props.getProperty("senha");
               String banco = props.getProperty("banco");
               int res; 
               // Abre o arquivo
               FileInputStream stream = new FileInputStream(url);
               // Transforma os arquivos de byte para String
               InputStreamReader bkp = new InputStreamReader(stream);  
               if (System.getProperty("os.name").equals("Linux")) {
                   Process proc = Runtime.getRuntime().exec("/bin/bash -c 'mysql -uroot -p"+senha+" -f "+banco+" < "+bkp+"'");
                   proc.waitFor();
                   res = proc.exitValue();
                   if (res == 0){
                       JOptionPane.showMessageDialog(null, "Backup Restaurado com sucesso!");
                   }
                   else{
                       JOptionPane.showMessageDialog(null, "Falha ao restaurar backup Linux. \n Verifique as configurações ou entre em contato com o suporte!");
                   }   
               } else {
                   Process proc = Runtime.getRuntime().exec("cmd /c mysql -uroot -p"+senha+" -f "+banco+" < "+bkp);
                   proc.waitFor();
                   res = proc.exitValue();
                   if (res == 0){
                       JOptionPane.showMessageDialog(null, "Backup Restaurado com sucesso!");
                   }
                   else{
                       JOptionPane.showMessageDialog(null, "Falha ao restaurar backup. \n Verifique as configurações ou entre em contato com o suporte!");
                   }  
               }

           }  
           catch(Exception err){  
               JOptionPane.showMessageDialog(null, "Erro ao restaurar banco: "+err.getMessage());  
               System.out.println(err.getStackTrace());  
           }  
       }

O problema, descobri que vem a ser nesta parte:

                   Process proc = Runtime.getRuntime().exec("/bin/bash -c 'mysql -uroot -p"+senha+" -f "+banco+" < "+bkp+"'");

Só que não sei como é que ficaria correto, visto que todos os exemplos que tenho achado no Google são para o Windows… =/

Caso alguem possa me ajudar agradeço.

Abraço

você consegue realizar esse comando através de um script?

e qual o erro que dá?

Zoren, na verdade ele nao da erro algum, apenas cai na exeção de não ter conseguido roda o comando.

Acho que o problema é a chamada do /bin/bash pelo visto, mais nao acho na net outra forma de fazer essa chamada, a unica forma que achei foi:

Process proc = Runtime.getRuntime().exec("/bin/bash -c ‘mysql -uroot -p"+senha+" -f “+banco+” < “+bkp+”’");

A parte mysql -uroot -p"+senha+" -f “+banco+” < "+bkp; rodando no terminal funciona que eu testei… =/

Mas se vc dar o printStackTrace ele traz oq?

é necessário fazer com o /bin/bash?

Não seria melhor fazer através de script?

Ao invez de usar um InputStreamReader, não seria melhor vc usar uma String?

zoren verdade, ao ler um pouco mais na net nem é necessario ler o arquivo, é so passar a url para o mysql que ele faz o trabalho todo…

Eu fiz um teste no meu codigo, usei o comando mkdir para criar uma pasta, sem usar o /bin/bash e funcionou, so que o comando de chamada do mysql num foi… =/

Existe um parametro q vc passa para o banco um comando, não sei se existe no mysql, acredito que resolva seu problema

Mas n lembro qual é o comando, vamos supor que fosse s, ai vc usaria assim:

mysql -uusuario -psenha -s 'source /home/usuario/backup.sql'

Deu algum erro qdo vc tentou usar o do mysql?

Ainda nada, agora tenho certeza que o problema é a chamada do bash…

Sei disso, pois os comandos como a chamada de programas graficos como o firefox por exemplo roda normalmente, porem a chamada de comandos modo texto como o ls num tem saida… =/