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.
DatabaseBackup requires:
mariadb
andmariadb-dump
for MariaDB/MySql databases (previouslymysql
andmysqldump
);pg_dump
andpg_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.
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 CakePHP documentation.
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 page.
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 what2.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 what2.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.
See our wiki.
Before opening an issue, check this list of common issues.
Normally tests are only run on one driver at a time, by default mysql
.
To run tests with another driver, you can use the scripts defined in composer.json
:
For example:
$ composer test
$ composer test-postgres
$ composer test-sqlite
Instead, to run tests with all drivers, you can use the test-all
script (individual tests are chained together).
For individual drivers, 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
For transparency and insight into our release cycle and to maintain backward compatibility, DatabaseBackup will be maintained under the Semantic Versioning guidelines.