バックアップとリストア

バックアップとリストアの例です。これはローカルホスト上でしか行えないようです。したがって、hostNameには"localhost"を入れてください。

追記:ディスク容量不足で書き込みが行えなくなると、何のエラーも出さずに書き込みファイルを消すだけで終了してしまうようです。終了後に書き込みファイルが存在するかどうかチェックする必要があります。

import org.firebirdsql.gds.impl.*;
import org.firebirdsql.management.*;
...............................
  /** バックアップする */
  public void backup(File fdb, File fbk) throws Exception {
    
    // 既に上書きの許可は出ているものとする
    fbk.delete();

    // バックアップする
    FBBackupManager manager = new FBBackupManager(GDSType.getType("PURE_JAVA"));
    manager.setHost(hostName);
    manager.setDatabase(fdb.getAbsolutePath());
    manager.setUser(userName);
    manager.setPassword(password);
    manager.setBackupPath(fbk.getAbsolutePath());
    try {
      manager.backupDatabase();
    } catch (Exception ex) {
      // エラー時バックアップ先ファイルを消す
      fbk.delete();      
      throw ex;
    }
  }
  
  /** リストアする */
  public void restore(File fbk, File fdb) throws Exception {

    // 既に上書きの許可は出ているものとする。
    // 既に存在する場合は削除しておかないと必ず失敗する。
    fdb.delete();
    
    // リストアする。
    FBBackupManager manager = new FBBackupManager(GDSType.getType("PURE_JAVA"));
    manager.setUser(userName);
    manager.setPassword(password);
    manager.setBackupPath(fbk.getAbsolutePath());
    manager.setDatabase(fdb.getAbsolutePath());
    try {
      manager.restoreDatabase();
    } catch (Exception ex) {
      // エラー時リストア先ファイルを消す
      fdb.delete();
      throw ex;
    }
  }