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.
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.
Recent packages and the master branch require at least CakePHP 5.0 and PHP 8.1 and the current development of the code
is based on these and later versions of CakePHP and PHP.
However, there are still some branches compatible with previous versions of PHP.
Instead, the cakephp4 branch requires at least PHP
>=7.4.0
and CakePHP ^4.0
.
In this case, you can install the package as well:
$ composer require --prefer-dist mirko-pagliai/cakephp-database-backup:dev-cakephp4
Note that the cakephp4
branch will no longer be updated as of January 05, 2024,
except for security patches, and it matches the
2.12.3 version.
Instead, the cakephp3 branch requires at least PHP
>=5.6 <7.4
and CakePHP ^3.5.1
.
In this case, you can install the package as well:
$ composer require --prefer-dist mirko-pagliai/cakephp-database-backup:dev-cakephp3
Note that the cakephp3
branch will no longer be updated as of April 29, 2021,
except for security patches, and it matches the
2.8.5 version.
DatabaseBackup requires:
mysql
andmysqldump
for MySql databases;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.
Please forward, remember that the database user must have the correct
permissions (for example, for mysql
the user must have the LOCK TABLES
permission).
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.
See our wiki:
- Export backups as cron jobs
- How to use the BackupExport utility
- How to use the BackupImport utility
- How to use the BackupManager utility
- How to use the BackupShell
And refer to our API.
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
For transparency and insight into our release cycle and to maintain backward compatibility, DatabaseBackup will be maintained under the Semantic Versioning guidelines.