# mco_disk_backup

> Perform a file backup for a persistent database.

> ### For an overview see page File_Backup

### Prototype

        MCO_RET	mco_disk_backup(	/*IN*/ mco_db_h db,
                        /*IN*/ char const* db_backup_path,
                        /*IN*/ char const* log_backup_path);

### Arguments

db | The database handle that was established by `mco_db_connect()`
db_backup_path | The path and filename for the backup database file
log_backup_path | The path and filename for the backup log file

### Description

> This function allows applications to copy the database and log file for a persistent database. The database can then be "restored" by simply specifying these backup files in the device definition and opening the database in the normal way. Note that the application performing a file backup must use log type `REDO_LOG.`

> The ``file_backup_delay`` parameter passed to `mco_db_open_dev()` can be adjusted to specify the delay in milliseconds between writing backup blocks in order to minimize backup impact on performance.

### Return Codes

MCO_S_OK | File backup completed successfully.
MCO_E_DISK_INCOMPATIBLE_LOG_TYPE | Invalid database log type. Only `REDO_LOG` is supported by the backup
MCO_E_DISK_OPEN | Unable to open backup files*
MCO_E_DISK_READ | Unable to read the database or the log file*
MCO_E_DISK_WRITE | Unable to write the database backup or log file*
MCO_E_DISK_CLOSE | Unable to close the log or the database backup file*

*These errors indicate a file system failure or possibly invalid file names

### Example

        Application snippet:

        const char * dbname = "SimpleDb";

        int main(int argc, char* argv[])
        {
            mco_db_h db;
            MCO_RET rc;
            mco_device_t       dev[4];
            mco_db_params_t    db_params;
            char * db_file = "SimpleDb_backup.dbs";
            char * log_file = "SimpleDb_backup.log";

            ...
            rc = mco_db_open_dev( dbname, simple_get_dictionary(), dev, 4, &db_params );

            if ( MCO_S_OK != rc )
            {
                rc = mco_db_connect(  dbname, &db );
                ...
                rc = mco_disk_backup( db, db_file, log_file);

                ...
            }
        }

### Files

Header file:
mco.h
Source file:
mcodisk.c
Library:
libmcovtdsk.a