Module org.firebirdsql.jaybird
Package org.firebirdsql.management

# Interface BackupManager

All Superinterfaces:
  `AttachmentProperties`, `BaseProperties`, `ServiceConnectionProperties`, `ServiceManager`

All Known Implementing Classes:
  `FBBackupManager`, `FBBackupManagerBase`, `FBStreamingBackupManager`

public interface BackupManager extends ServiceManager
Implements the backup and restore functionality of Firebird Services API.

Author:
  Roman Rokytskyy, Steven Jardine

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `BACKUP_CONVERT`
  Backup external files as tables.
  `static final int`
  `BACKUP_EXPAND`
  No data compression.
  `static final int`
  `BACKUP_IGNORE_CHECKSUMS`
  Ignore checksums.
  `static final int`
  `BACKUP_IGNORE_LIMBO`
  Ignore in-limbo transactions.
  `static final int`
  `BACKUP_METADATA_ONLY`
  Backup metadata only.
  `static final int`
  `BACKUP_NO_GARBAGE_COLLECT`
  Do not collect garbage during backup.
  `static final int`
  `BACKUP_NON_TRANSPORTABLE`
  Use non-transportable backup format.
  `static final int`
  `BACKUP_OLD_DESCRIPTIONS`
  Save old style metadata descriptions.
  `static final int`
  `RESTORE_DEACTIVATE_INDEX`
  Deactivate indices during restore.
  `static final int`
  `RESTORE_NO_SHADOW`
  Do not restore shadow database.
  `static final int`
  `RESTORE_NO_VALIDITY`
  Do not restore validity constraints.
  `static final int`
  `RESTORE_ONE_AT_A_TIME`
  Commit after completing restore of each table.
  `static final int`
  `RESTORE_USE_ALL_SPACE`
  Do not reserve 20% on each page for the future versions, useful for read-only databases.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addBackupPath(String path)`
  Add backup file to the list.
  `void`
  `addBackupPath(String path, int size)`
  Add the file to the backup of the specified size.
  `void`
  `addRestorePath(String path, int size)`
  Add the file to the multi-file database of the specified size for restore operation.
  `void`
  `backupDatabase()`
  Perform the backup operation.
  `void`
  `backupDatabase(int options)`
  Perform the backup operation.
  `void`
  `backupMetadata()`
  Perform the backup operation, metadata only.
  `void`
  `clearBackupPaths()`
  Clear the information about backup paths.
  `void`
  `clearRestorePaths()`
  Clear the information about restore paths.
  `void`
  `restoreDatabase()`
  Perform the restore operation.
  `void`
  `restoreDatabase(int options)`
  Perform the restore operation.
  `void`
  `setBackupPath(String backupPath)`
  Sets the location of the backup file.
  `void`
  `setDatabase(String path)`
  Set the path to the database.
  `void`
  `setRestorePageBufferCount(int bufferCount)`
  Set the default number of pages to be buffered (cached) by default in a restored database.
  `void`
  `setRestorePageSize(int pageSize)`
  Set the page size that will be used for a restored database.
  `void`
  `setRestoreReadOnly(boolean readOnly)`
  Set the read-only attribute on a restored database.
  `void`
  `setRestoreReplace(boolean replace)`
  Set the restore operation to create a new database, as opposed to overwriting an existing database.
  `void`
  `setVerbose(boolean verbose)`
  Set whether the operations of this `BackupManager` will result in verbose logging to the configured logger.

  ### Methods inherited from interface org.firebirdsql.jaybird.props.AttachmentProperties

  `getAuthPlugins, getCharSet, getConnectTimeout, getDbCryptConfig, getEnableProtocol, getEncoding, getParallelWorkers, getPassword, getPortNumber, getProcessId, getProcessName, getRoleName, getServerName, getSocketBufferSize, getSocketFactory, getSoTimeout, getType, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setConnectTimeout, setDbCryptConfig, setEnableProtocol, setEncoding, setParallelWorkers, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setServerName, setSocketBufferSize, setSocketFactory, setSoTimeout, setType, setUser, setWireCompression, setWireCrypt`

  ### Methods inherited from interface org.firebirdsql.jaybird.props.BaseProperties

  `connectionPropertyValues, getBooleanProperty, getBooleanProperty, getIntProperty, getIntProperty, getProperty, getProperty, setBooleanProperty, setIntProperty, setProperty`

  ### Methods inherited from interface org.firebirdsql.jaybird.props.ServiceConnectionProperties

  `getExpectedDb, getServiceName, setExpectedDb, setServiceName`

  ### Methods inherited from interface org.firebirdsql.management.ServiceManager

  `getDatabase, getHost, getLogger, getPort, getServerVersion, getWireCryptAsEnum, setHost, setLogger, setPort, setWireCryptAsEnum`

- ## Field Details

  - ### BACKUP_IGNORE_CHECKSUMS

    static final int BACKUP_IGNORE_CHECKSUMS
    Ignore checksums.
    See Also:
      - Constant Field Values

  - ### BACKUP_IGNORE_LIMBO

    static final int BACKUP_IGNORE_LIMBO
    Ignore in-limbo transactions.
    See Also:
      - Constant Field Values

  - ### BACKUP_METADATA_ONLY

    static final int BACKUP_METADATA_ONLY
    Backup metadata only.
    See Also:
      - Constant Field Values

  - ### BACKUP_NO_GARBAGE_COLLECT

    static final int BACKUP_NO_GARBAGE_COLLECT
    Do not collect garbage during backup.
    See Also:
      - Constant Field Values

  - ### BACKUP_OLD_DESCRIPTIONS

    static final int BACKUP_OLD_DESCRIPTIONS
    Save old style metadata descriptions.
    See Also:
      - Constant Field Values

  - ### BACKUP_NON_TRANSPORTABLE

    static final int BACKUP_NON_TRANSPORTABLE
    Use non-transportable backup format.
    See Also:
      - Constant Field Values

  - ### BACKUP_CONVERT

    static final int BACKUP_CONVERT
    Backup external files as tables.
    See Also:
      - Constant Field Values

  - ### BACKUP_EXPAND

    static final int BACKUP_EXPAND
    No data compression.
    See Also:
      - Constant Field Values

  - ### RESTORE_DEACTIVATE_INDEX

    static final int RESTORE_DEACTIVATE_INDEX
    Deactivate indices during restore.
    See Also:
      - Constant Field Values

  - ### RESTORE_NO_SHADOW

    static final int RESTORE_NO_SHADOW
    Do not restore shadow database.
    See Also:
      - Constant Field Values

  - ### RESTORE_NO_VALIDITY

    static final int RESTORE_NO_VALIDITY
    Do not restore validity constraints.
    See Also:
      - Constant Field Values

  - ### RESTORE_ONE_AT_A_TIME

    static final int RESTORE_ONE_AT_A_TIME
    Commit after completing restore of each table.
    See Also:
      - Constant Field Values

  - ### RESTORE_USE_ALL_SPACE

    static final int RESTORE_USE_ALL_SPACE
    Do not reserve 20% on each page for the future versions, useful for read-only databases.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### setBackupPath

    void setBackupPath(String backupPath)
    Sets the location of the backup file. This method is used to set the path to the backup consisting of a single file. It is not possible to add multiple files or specify the max. size of the file using this method. It is also not possible to call `addBackupPath(String, int)` method after calling this one.
    Parameters:
      `backupPath` - the location of the backup file.
    See Also:
      - `for multi-file backups.`

  - ### addBackupPath

    void addBackupPath(String path, int size)
    Add the file to the backup of the specified size. Firebird allows splitting the backup into multiple files, limiting the size of the backup file. This can be useful for example for creating a backup on CD or DVD.
    Parameters:
      `path` - path to the backup file.
      `size` - max size of the file in bytes.

  - ### addBackupPath

    void addBackupPath(String path)
    Add backup file to the list. This method is used only during restoring the database to specify multi-file backups. The call is equivalent to passing the size -1 to `addBackupPath(String, int)` call.

    If application invokes backup operation, an error is generated in that call.

    Parameters:
      `path` - path to the backup file.

  - ### clearBackupPaths

    void clearBackupPaths()
    Clear the information about backup paths. This method undoes all parameters set in the `addBackupPath(String, int)` or `addBackupPath(String)` methods.

  - ### setDatabase

    void setDatabase(String path)
    Set the path to the database. This method is used both for backup and restore operation.
    Specified by:
      `setDatabase` in interface `ServiceManager`
    Parameters:
      `path` - path to the database file.

      In case of backup, value specifies the path of the existing database on the server that will be backed up.

      In case of restore, value specifies the path of the single-file database where the backup will be restored to.

  - ### addRestorePath

    void addRestorePath(String path, int size)
    Add the file to the multi-file database of the specified size for restore operation.
    Parameters:
      `path` - path to the backup file.
      `size` - max size of the database file in pages.

  - ### clearRestorePaths

    void clearRestorePaths()
    Clear the information about restore paths. This method undoes all parameters set in the `addRestorePath(String, int)` or `setDatabase(String)` methods.

  - ### backupDatabase

    void backupDatabase() throws SQLException
    Perform the backup operation.
    Throws:
      `SQLException` - if a database error occurs during the backup

  - ### backupMetadata

    void backupMetadata() throws SQLException
    Perform the backup operation, metadata only.
    Throws:
      `SQLException` - if a database error occurs during the backup

  - ### backupDatabase

    void backupDatabase(int options) throws SQLException
    Perform the backup operation.
    Parameters:
      `options` - a bitmask combination of the `BACKUP_*` constants for the backup operation
    Throws:
      `SQLException` - if a database error occurs during the backup

  - ### setVerbose

    void setVerbose(boolean verbose)
    Set whether the operations of this `BackupManager` will result in verbose logging to the configured logger.
    Parameters:
      `verbose` - If `true`, operations will be logged verbosely, otherwise they will not be logged verbosely

  - ### setRestorePageBufferCount

    void setRestorePageBufferCount(int bufferCount)
    Set the default number of pages to be buffered (cached) by default in a restored database.
    Parameters:
      `bufferCount` - The page-buffer size to be used, a positive value

  - ### setRestorePageSize

    void setRestorePageSize(int pageSize)
    Set the page size that will be used for a restored database. The value for `pageSize` must be one of: 1024, 2048, 4096, 8192 or 16384. The default value depends on the Firebird version.
    Parameters:
      `pageSize` - The page size to be used in a restored database, one of 1024, 2048, 4196, 8192 or 16384
    See Also:
      - `PageSizeConstants`

  - ### setRestoreReplace

    void setRestoreReplace(boolean replace)
    Set the restore operation to create a new database, as opposed to overwriting an existing database.
    Parameters:
      `replace` - If `true`, the restore operation will attempt to create a new database if it does not exit or overwrite an existing one when it exists, `false` when restore should fail if database already exist (if it doesn't, a database will be successfully created).

  - ### setRestoreReadOnly

    void setRestoreReadOnly(boolean readOnly)
    Set the read-only attribute on a restored database.
    Parameters:
      `readOnly` - If `true`, a restored database will be read-only, otherwise it will be read-write.

  - ### restoreDatabase

    void restoreDatabase() throws SQLException
    Perform the restore operation.
    Throws:
      `SQLException` - if a database error occurs during the restore

  - ### restoreDatabase

    void restoreDatabase(int options) throws SQLException
    Perform the restore operation.
    Parameters:
      `options` - A bitmask combination of `RESTORE_*` constants
    Throws:
      `SQLException` - if a database error occurs during the restore