mirko-pagliai/cakephp-database-backup

Database Backup plugin for CakePHP

2.13.3 2024-12-18 18:55 UTC

README

Software License CI codecov Codacy Badge CodeFactor

DatabaseBackup is a CakePHP plugin to export, import and manage database backups. Currently, the plugin supports MySql, Postgres and Sqlite databases.

Did you like this plugin? Its development requires a lot of time for me. Please consider the possibility of making a donation: even a coffee is enough! Thank you.

Make a donation

Requirements

DatabaseBackup requires:

  • mysql and mysqldump for MySql databases;
  • pg_dump and pg_restore for Postgres databases;
  • sqlite3 for Sqlite databases.

Optionally, if you want to handle compressed backups, bzip2 and gzip are also required.

The installation of these binaries may vary depending on your operating system.

Please forward, remember that the database user must have the correct permissions (for example, for mysql the user must have the LOCK TABLES permission).

Installation

You can install the plugin via composer:

$ composer require --prefer-dist mirko-pagliai/cakephp-database-backup

Then you have to load the plugin. For more information on how to load the plugin, please refer to the Cookbook.

Simply, you can execute the shell command to enable the plugin:

$ bin/cake plugin load DatabaseBackup

This would update your application's bootstrap method.

By default, the plugin uses the APP/backups directory to save the backups files. So you have to create the directory and make it writable:

$ mkdir backups/ && chmod 775 backups/

If you want to use a different directory, read the Configuration section.

Installation on older CakePHP and PHP versions

Compared to the current installation requirements, some tags are provided for those using older versions of CakePHP and PHP (until February 7, 2025, they were available as branches, now only as tags):

  • tag cakephp4, which requires at least PHP >=7.4.0 and CakePHP ^4.0.
    This tag no longer receives any updates as of January 5, 2024, and roughly coincides with what 2.12.3 version was.
  • tag cakephp3, which requires at least PHP >=5.6 <7.4 and CakePHP ^3.5.1.
    This tag no longer receives any updates as of April 29, 2021, and roughly coincides with what 2.8.5 version was.

You can freely use these tags, even by downloading the source codes from the attached assets, but their functioning is no longer guaranteed, especially regarding old dependencies that may no longer be available.

Configuration

The plugin uses some configuration parameters. See our wiki:

If you want to send backup files by email, remember to set up your application correctly so that it can send emails. For more information on how to configure your application, see the Cookbook.

How to use

See our wiki:

And refer to our API.

Testing

Tests are run for only one driver at a time, by default mysql. To choose another driver to use, you can set the driver_test environment variable before running phpunit.

For example:

driver_test=sqlite vendor/bin/phpunit
driver_test=postgres vendor/bin/phpunit

Alternatively, you can set the db_dsn environment variable, indicating the connection parameters. In this case, the driver type will still be detected automatically.

For example:

db_dsn=sqlite:///' . TMP . 'example.sq3 vendor/bin/phpunit

Versioning

For transparency and insight into our release cycle and to maintain backward compatibility, DatabaseBackup will be maintained under the Semantic Versioning guidelines.