This module will not recieve any updates in future and will not release in a stable version as its not recomend to use, use the luya admin proxy instead!
How to use luya proxy instead: https://luya.io/guide/concept-depandsync#sync
The exporter module allowss you to easily download the full database and storage data from a project for a local import and thus, to setup a state of a website at a given time.
Add the exporter module to your composer.json:
"luyadev/luya-module-exporter" : "1.0.0-RC4",
Set up you your application configuration as follows :
'modules' => [
// ...
'exporter' => [
'class' => 'luya\exporter\Module',
'downloadPassword' => 'EnterYourSecureRandomToken',
],
]
And finally run the ./vendor/bin/luya migrate
and ./vendor/bin/luya import
commands.
Now you can install a cronjob or run the command when doing deployment to prepare the download:
./vendor/bin/luya exporter/export
In order to download the above created files, just go into:
https://example.com/exporter?p=EnterYourSecureRandomToken and your zip will be downloaded.
Attention! HTTP sniffers can read your plain token.
To import a database from a remote host, you can use this command:
./vendor/bin/luya exporter/database/remote-replace-local "mysql:host=localhost;dbname=REMOTE_DB_NAME" "USERNAME" "PASSWORD"
Attention! This command will drop all tables in your current database and replace them with the remote export.
To use this in a context where you aren't able to process user inputs (chained remote batch processing like in a deployer task) you can disable the security confirmation by adding the parameter --interactive=0
. Obviously, this should be used with extreme caution to prevent any unwanted data losses.
For your safety there will be an automatically created database backup of the local db. The backup can be found in the local temporary system directory - the file name resembles like this:
uniqid() . '-BACKUP-'.time()
When using the LUYA deployer you may want to add the remote replace local command as a task and execute them when deploying the prep environment, here an example of what this could look like, you will find more information in the luya deployer docs:
task('deploy:importProdDb', function() {
cd('{{release_path}}');
run('./vendor/bin/luya exporter/database/remote-replace-local "mysql:host=localhost;dbname=prod_database" "USER" "PASSWORD" --interactive=0');
})->onlyOn('prep');
after('deploy:luya', 'deploy:importProdDb');