Criando backup numa aplicação java desktop com firebird duvidas!

Estou desenvolvendo uma aplicação simples em Java Desktop + Hibernate, e banco de dados Firebird-2.5.0.25920_0_x64_RC2, o problema maior que estou querendo implementar a ferramenta backup nessa aplicação, as dificuldades maiores começar aparecer agora por não ter um conhecimento grande, e nem noção de como fazer um backup, se alguém poder me ajudar, a imagem mostra o modelo da interface backup que desejo desenvolver.
imagem da janela backup: http://cid-4caeef7c85b13343.office.live.com/self.aspx/.Public/Imagens%20Aplicativos/Backup.jpg

BACKUP:
1: Minha duvida é como eu posso utilizar o JFileChooser fj = new JFileChooser() no evento do btLocalActionPerformed passando o caminho URL(path) com o nome do backup desejado para salvar no local escolhido na ação do outro evento do botão (btBackupActionPerformed).
Mesma duvida para restaurar, como faço para selecionar o objeto num evento e passar para o outro evento restaurar fazer a restauração do BD?

private void btLocalActionPerformed(java.awt.event.ActionEvent evt) {
}
private void btBackupActionPerformed(java.awt.event.ActionEvent evt) {
}

RESTAURAR:
private void btSelecionarActionPerformed(java.awt.event.ActionEvent evt) {
}
private void btRestaurarActionPerformed(java.awt.event.ActionEvent evt) {
}

Saudações jovem…
Segue o codigo que achei na net … e fiz algumas alterações:

/**
 * Codigo base de http://www.arquivodecodigos.net/dicas/java-usando-jfilechooser-para-escolher-um-diretorio-a-partir-de-um-jframe-485.html
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

public class SelecionarBanco extends JFrame{
    private String selecionado;
    private String restaurado;

    public SelecionarBanco(){
        super("Escolher diretorio e arquivo");
        Container c = getContentPane();
        FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
        c.setLayout(layout);

        JButton btnBackUp = new JButton("Escolher BackUp");
        JButton btnLocal = new JButton("Diretorio para BackUp");

        JButton btbtSeleciona = new JButton("Seleciona");
        JButton btbtRestaurar = new JButton("Restaura");

        JFileChooser fcaArquivo = new JFileChooser();

        btnBackUp.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    JFileChooser fcaArquivo = new JFileChooser();
                    //somente arquivos
                    fcaArquivo.setFileSelectionMode(JFileChooser.FILES_ONLY);

                    int res = fcaArquivo.showOpenDialog(null);

                    if(res == JFileChooser.APPROVE_OPTION){
                        File diretorio = fcaArquivo.getSelectedFile();
                        JOptionPane.showMessageDialog(null, "Voce escolheu o arquivo: " + diretorio.getAbsolutePath());
                        
                        setRestaurado(diretorio.getAbsolutePath());
                    }
                    else
                        JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum arquivo.");
                }
            }
        );
        btnLocal.addActionListener(
            new ActionListener(){
                public void actionPerformed(ActionEvent e){
                    JFileChooser fcaArquivo = new JFileChooser();
                    //somente diretorios
                    fcaArquivo.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);


                    int res = fcaArquivo.showOpenDialog(null);

                    if(res == JFileChooser.APPROVE_OPTION){
                        File diretorio = fcaArquivo.getSelectedFile();
                        JOptionPane.showMessageDialog(null, "Voce escolheu o diretorio: " + diretorio.getAbsolutePath());

                        setSelecionado(diretorio.getAbsolutePath());
                    }
                    else
                        JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum diretorio.");
                }
            }
        );
        btbtSeleciona.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {
                //Aqui voce insere seu metodo para gerar o backup
                JOptionPane.showMessageDialog(null, "Gerando o backUp em ".concat(getSelecionado()));
            }
        });
        btbtRestaurar.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ae) {
                //Aqui voce insere seu metodo para restaurar o backup
                JOptionPane.showMessageDialog(null, "Restaurando o backUp de ".concat(getRestaurado()));
            }
        });

        c.add(btnBackUp);
        c.add(btnLocal);
        c.add(btbtSeleciona);
        c.add(btbtRestaurar);

        setSize(400, 200);
        setVisible(true);
    }

    public String getRestaurado() {
        return restaurado;
    }

    public void setRestaurado(String restaurado) {
        this.restaurado = restaurado;
    }

    public String getSelecionado() {
        return selecionado;
    }

    public void setSelecionado(String selecionado) {
        this.selecionado = selecionado;
    }


    public static void main(String[] args) {
        SelecionarBanco sb = new SelecionarBanco();
        sb.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Acho que o código fala por si …então tenta ai e qualquer duvida é só perguntar

nightcrowls, segue em anexo classe de backup.

Fiz teste aqui e funcionou.

Lembrando que as rotinas de backup e restore são do “jaybird-full-2.0.1.jar” e para realizar, não pode haver conexão no banco.
Você provavelmente está usando ou usará um pool de conexão, então, antes de executar os procedimento, ele deverá ser fechado.

grato a todos que contribuiram com suas dicas, vou estar analisando e testendo as soluções, qalqer coisa postarei as duvidas aqi…