A VitoDeploy plugin for creating secure, queued native database exports through a guided GUI.
- MySQL, MariaDB, and PostgreSQL support through Vito's native backup templates
- Server-preselected entry point from Server → Features
- Ready-state, engine, and remote disk-space safety checks
- Private mode-700 remote workspace and mode-600 export files
- Streamed SSH transfer without loading the SQL dump into PHP memory
- Authenticated, project-scoped download URLs
- Configurable download retention with automatic local and remote cleanup
- Compressed-size limits, transfer-size verification, gzip validation, and SHA-256 checksums
- Background progress, redacted operational logs, cancellation, and retry
- Responsive light/dark interface matching VitoDeploy Database Importer
- Select a Vito server.
- Select a ready database.
- Choose a download filename and retention period.
- Run blocking safety checks.
- Start the export through Vito's
sshqueue. - Download the generated
.sql.gzfile before it expires.
Vito's administrative database access performs the native dump. Database user passwords are never requested or written to export logs.
In Vito, open Admin → Plugins → Install, then enter:
https://github.com/cp6/VitoDeploy-Database-Export/
Keep the trailing slash when installing on Vito versions that trim .git from
repository URLs. Those versions can otherwise remove the final t from a
repository name ending in Export and incorrectly report that it has no
released versions.
Install and enable the latest release. The exporter appears under Server → Features → Database Exporter and at /database-exporter.
The normal Vito queue worker must process the ssh and default queues.
If Vito disabled an earlier version with Feature 'database-exporter' already exists, update to v1.0.3 or later and enable the plugin again under Admin → Plugins. Updating alone does not restore the enabled state. This release tolerates existing feature and action registrations, including those stored in Vito's configuration cache.
Verify registration from the Vito application directory with php artisan route:list --name=database-exporter, run as the Vito application user. The list should contain nine exporter routes.
The plugin defaults are in config/database-export.php:
| Setting | Default | Purpose |
|---|---|---|
disk |
local |
Private Laravel filesystem disk used for completed exports |
retention_hours |
1, 6, 24, 72 |
Allowed download-retention choices |
default_retention_hours |
24 |
Default download lifetime |
failed_run_retention_hours |
24 |
Failed-run log retention |
max_export_mb |
8192 |
Maximum compressed export size |
minimum_remote_free_mb |
512 |
Required free space before export |
drop_tables_on_uninstall |
false |
Whether uninstall removes plugin metadata |
Environment overrides:
VITO_DATABASE_EXPORT_DISK=localUse a private disk only. The download controller performs authentication and ownership checks; export files should not be placed on a directly public filesystem.
- Only users with write access to the selected database can start or download an export.
- Every run is scoped to its creator and current Vito project; Vito administrators retain recovery access.
- Database and server identifiers are revalidated against the current project before queueing.
- The remote artifact lives in a private directory and is deleted in the job's
finallyblock. - Completed downloads are sent with
private, no-storeandnosniffheaders. - Expired artifacts are deleted by a delayed cleanup job and opportunistic page cleanup.
- Filenames are normalized and cannot contain paths or unsafe characters.
composer validate
npm install
npm run build:cssRun the plugin tests from a Vito checkout with this repository installed as a development plugin.
MIT