cara se voce quer fazer isso da aplicação java voce
pode executar um script dessa forma:
Runtime.getRunTime().exec("path do script");
voce pode fazer isso em uma thread que irra rodar e executarar o script nos intervalos de
tempos desejavel em hora e hora se for diario uma vez por dia realmente e melhor por um script
para executar nas rotinas do sistema operacional.
no windows serias nas tarefas agendadas.
no ubuntu e outras distribuições linux voce pode usar o cron.
mas se for necessario fazer da aplicação voce pausa a execução da thread assim pelo tempo passado em milisegundos.
Thread.sleep(100000);//tempo em milisegundos
voce pode executar uma thread assim:
new Thread( new Runnable() {
public void run() {
//aqui entra o codigo
//que executa o script no tempo
//que voce quiser
}
}
).start();
e quase isso so que não são executadas ao mesmo tempo ao não ser que o computador tenha
varios processadores. o que realmente acontece e que a thread filha executa em concorrencia
com as outras thread do programa dando uma impressão de que são executadas ao mesmo tempo.
certo Jefries voce realmente vai fazer os backup pela aplicação???
como falei antes isso serria otimo se o backup for executado por exemplo em hora e hora ou um tempo
menor isso pode ser ate configurado pelo usuario é como se fosse um backup altomatico executado pelo
programa e realmente isso que voce quer.
ja fiz isso uma vez depois vou postar algo relacionado a isso quando tiver tempo de procurar o projeto que
no momento não to com ele.
File file = null;
StringBuffer buffer = null;
if(File.separator.compareTo("/") == 0 ) {
file = new File( "restore.sh" );
buffer = new StringBuffer("#!/bin/bash\n\n");
} else {
file = new File( "restore.bat" );
buffer = new StringBuffer();
}
buffer.append("");//CODIGO DO RESTORE DO BANCO DE DADOS
try {
BufferedWriter saida = new BufferedWriter(new PrintWriter(file));
saida.write(buffer.toString());
saida.close();
} catch (FileNotFoundException ex) {
Logger.getLogger(ManageBackup.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex) {
Logger.getLogger(ManageBackup.class.getName()).log(Level.SEVERE, null, ex);
}
}
/*Retorna o tempo em milisegundos/
public static int getTime(String time) {
int ponto = time.indexOf(":");//captura o indice do caractere delimitador
if (ponto == -1) {
throw new IllegalArgumentException("Tempo invalido forneça o tempo no formato \"hh:mm\"");
}
int hora = Integer.parseInt(time.substring(0, ponto));//recupera o numero de horas
int min = Integer.parseInt(time.substring(ponto + 1,time.length()));//
return ( ( ( (hora * 60 ) + min ) * 60 ) * 1000 );//retorna o tempo em milisegundos
}
/Retorna o path de onde o script de restore estar salvo/
public static String getScriptBackup() {
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package db.admin.backup.sql.auto;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author antoniel
*/
public class Backup {
public Backup(long time) {
this.time = time;
}
/*Executa o backup em concorrencia com a aplicação.*/
public void createBackup(String shell) {
thread = new Thread(new RunBackup(shell));
}
/**Executa restore do banco de dados apartir de um backup.*/
public void createRestore(String shell) {
try {
processo = Runtime.getRuntime().exec(shell);
printErrorExecucao();
} catch (IOException ex) {
Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void stop() {
thread.stop();
}
public void start() {
thread.start();
}
public long getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public class RunBackup implements Runnable {
private RunBackup(String shell) {
this.shell = shell;
}
@Override
public void run() {
try {
while(true) {
Thread.sleep(time);
processo = Runtime.getRuntime().exec(shell);
printErrorExecucao();
}
} catch (InterruptedException ex) {
Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String shell;
}
private void printErrorExecucao() {
BufferedReader entrada = new BufferedReader(new InputStreamReader(processo.getErrorStream()));
String linha = null;
try {
while ((linha = entrada.readLine()) != null) {
System.out.println(linha);
}
entrada.close();
} catch (IOException ex) {
Logger.getLogger(Backup.class.getName()).log(Level.SEVERE, null, ex);
}
}
private long time;
private Thread thread;
private Process processo;
}
aqui e apenas exemplo de utilização.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package db.admin.backup.sql.auto;
/**
*
* @author antoniel
*/
public class RunBackup {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
ManageBackup.createScriptBackup();
Backup backup = new Backup(ManageBackup.getTime("01:00"));//executa o backup de hora em hora
backup.createBackup(ManageBackup.getScriptBackup());
backup.start();//inicia a thread
}
}
Valeu por responder lgWeb…
Eu utilizei o exemplo que o ajinfotec mostrou… juntamento com arquivos .bat, tanto para bckup como para restore… resolveu meu problema…
Beleza ajinfotec, vou testar aqui dessa forma, apesar de já ter conseguido resolver com o lance do arquivo .bat
Vou tentar afinal conhecimento nunca é demais…
Pois é cara moro em Fortaleza, cara qualquer coisa pega ai o meu msn e me add, ai trocamos conhecimentos… afinal de que adianta o conhecimento senão for para todas?!