Backups and restore
Backups and restores are Super Admin only. Restore and delete also need a recent password confirmation.
What a backup contains
- A full logical database dump produced in PHP. It needs neither shell access nor
mysqldump, so it works on shared hosting. The file is gzip-compressed with one statement per line; INSERTs are split at about 1 MB to stay under hosting packet limits. - A header with the application version, schema version and creation time, and an HMAC signature keyed to this installation.
- Optional AES-256-GCM encryption (setting
backup.encrypt, on by default) usingbackup.keyfromconfig/config.php. - Optionally, a ZIP of
storage/uploads(attachments and logos).
Files are stored in storage/backups/ (not web-accessible) and listed with size, SHA-256, status and creator. The Verify button re-hashes a file to check its integrity.
Creating backups
- Manually: Administration → Backups → Create backup.
- Automatically: Settings →
backup.auto_daily= on, plus cron. Retention (backup.retention_count, default 14) prunes the oldest automatic backups. - Download backups regularly and keep copies off the server. Keep the backup key in a separate safe place; without it, encrypted backups cannot be restored.
Restoring
- Administration → Backups → Restore on a listed backup, or upload a backup file made by this installation (its signature must verify).
- Confirm your password, review the target database name/host and the backup's version, and type the database name to confirm.
- Q-Putaway checks compatibility: the schema version must be no newer than the current one, with the same major version.
- It automatically takes a pre-restore backup, then executes only the statement shapes its own dumper writes (SET, DROP TABLE, CREATE TABLE, INSERT). It never runs arbitrary SQL.
If a restore fails part-way
The error shows the failing line. Restore the pre-restore backup (listed at the top of Backups) to return to the previous state, then investigate (time limits, disk space, packet size).
Limitations
- Restore runs in a single request. Very large databases may exceed the host's PHP time limit; on shared hosting, also keep hPanel's own automatic backups enabled.
- The uploads ZIP is not unpacked automatically on restore. Extract it into
storage/uploads/with File Manager. - Backups restore data, not code. Reinstall the matching application version first if needed.