RafaelViana 13 de mai. de 2010
Alguém sabe me dizer qual é o equivalente no Linux?
kemperacc 13 de mai. de 2010
Eu fiz uma funcao que cria um shellscript e executa ele. Esse shell que faz o backup…
public String doBackup () throws RemoteException , IOException , InterruptedException {
//faz o backup e retorna o nome do arquivo...
StringBuffer s = new StringBuffer ();
s . append ( "#!/bin/bash\n" );
s . append ( "\n" );
//COLOCAR NESTAS VARIAVEIS A INFORMACAO DE SERVIDOR, SENHA, USUARIO, ETC DO MYSQL
s . append ( "SERVER=localhost\n" );
s . append ( "USER=root\n" );
s . append ( "PORT=3306\n" );
s . append ( "PASS=123456\n" );
s . append ( "DB=meubanco\n" );
s . append ( "\n" );
File tmpDir = File . createTempFile ( "backupUltra" , null );
tmpDir . delete ();
tmpDir . mkdirs ();
s . append ( "TMPDIR=" + tmpDir . getAbsolutePath () + "\n" );
s . append ( "rm $TMPDIR\n" );
s . append ( "mkdir $TMPDIR\n" );
s . append ( "\n" );
s . append ( "mkdir -p /opt/ultraBackup\n" );
s . append ( "\n" );
s . append ( "mysqldump -h $SERVER --port $PORT -u $USER --password=$PASS --add-drop-database --add-drop-table --disable-keys --extended-insert --add-locks --single-transaction $DB | gzip -f > $TMPDIR/database.dump\n" );
s . append ( "\n" );
s . append ( "\n" );
SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd-HHmmss" );
String TGZ = "backup-ultra-" + sdf . format ( new Date ()) + ".tar.gz" ;
s . append ( "TGZ=/tmp/" + TGZ + "\n" );
s . append ( "\n" );
s . append ( "cd $TMPDIR\n" );
//String[] names = tmpDir.getAbsolutePath().split("[" + File.separator + "]");
s . append ( "tar czf $TGZ *\n" );
s . append ( "\n" );
s . append ( "rm -fr $TMPDIR\n" );
s . append ( "\n" );
s . append ( "mv $TGZ /opt/ultraBackup\n" );
s . append ( "\n" );
File scriptBackup = File . createTempFile ( "backupUltra" , ".sh" );
scriptBackup . createNewFile ();
scriptBackup . setExecutable ( true );
BufferedWriter bw = new BufferedWriter ( new FileWriter ( scriptBackup ));
bw . write ( s . toString ());
bw . flush ();
bw . close ();
Process p = Runtime . getRuntime (). exec ( scriptBackup . getAbsolutePath ());
int resultado = p . waitFor ();
if ( resultado == 0 ) {
scriptBackup . delete ();
return "/opt/ultraBackup/" + TGZ ;
} else {
throw new RemoteException ( "Saida de erro: " + resultado );
}
}
RafaelViana 13 de mai. de 2010
Legal esse seu script bem mais trabalhado.Pelo que eu entendi você cria um arquivo .sh temporário executa ele e salvo o backup em arquivo .tar.gz.
Mas não entendi algumas coisas nele:
Porque essa localização /opt/ultraBackup? Esse opt seria a pasta que você está salvando o backup?
kemperacc 13 de mai. de 2010
Eh sim,
No meu caso os backups vao sempre pra la… mas voce pode adicionar um parametro na funcao tipo dstDir sei la.
[]s
RafaelViana 17 de mai. de 2010
Não existe algo similar que possa fazer o mysqldump no Linux?
Como faço para chamar o comando mysqldump pelo Runtime.getExec?
JSjava 25 de ago. de 2011
Ai Rafael, sei que o post é antigo, mas estou com o mesmo problema, não seria possivel me passar a solucao, caso a tenha encontrado?
Obrigado.
RafaelViana 26 de ago. de 2011
Não foi mais necessário implementar esta funcionalidade. Por isso, acabei não finalizando esta tarefa.
Se achar a solução nos avise.