Database Export Genie

Descripción

  • One page, one button, a list of your backups.
  • Runs in the background: leave the page or close the tab and the backup keeps going.
  • Works on shared hosting: no mysqldump, no exec(), handles short timeouts and low memory limits.
  • Checks disk space before starting, and stops cleanly if the disk fills.
  • Every backup is verified before it’s shown as ready: the zip is re-read and every compressed chunk is checked against the SQL that was written.
  • Download or delete backups at any time. Delete the whole backup folder in one click.
  • Standard .sql inside. Restore with phpMyAdmin, Adminer, the mysql command or WP-CLI. No paywall, no Pro version.
  • Works with MySQL, MariaDB, Percona, Amazon Aurora, SQLite (WordPress Playground / SQLite Database Integration) and HyperDB / LudicrousDB setups.
  • Multisite: back up the whole network, or one site (optionally with its users, optionally renamed for a standalone install).
  • No emails, no upsells, no tracking. The only outbound request is to your own site (to keep the backup running in the background).

Advanced options (hidden behind one checkbox): a custom backup name, and a table picker so you can export a few tables, or just one.

What’s included

Every table that starts with your WordPress table prefix. Nothing inside those tables is skipped, including transients and options that start with an underscore. The one exception is this plugin’s own progress data (dbmg_* rows in the options table), which would be meaningless after a restore. Tables from other applications that share the database are listed under «Other tables» in Advanced options and are only exported if you tick them.

WP-CLI

  • wp dbmg create [--description=<text>] [--tables=<list>] [--site=<id>] [--include-users] [--convert-prefix] [--run]
  • wp dbmg run — finish the running backup in this process (useful on hosts that block background requests, or from a system cron).
  • wp dbmg status, wp dbmg list, wp dbmg delete <id>..., wp dbmg cancel

Future ideas

Not planned for now, listed here so they don’t creep in: restore from the dashboard, file backups, schedules, cloud destinations, email notifications.

Credits

The SQL export engine follows the design of WP Migrate Lite’s table exporter (GPLv2 or later): keyset pagination over primary and compound keys, hex-encoded binary columns and multi-row INSERT buffering. This plugin is not affiliated with or endorsed by its authors.

The genie icon is based on the genie from Noto Emoji, copyright Google LLC, used under the Apache License 2.0 (head and turban redrawn) (https://www.apache.org/licenses/LICENSE-2.0, source: https://github.com/googlefonts/noto-emoji).

Capturas

Instalación

  1. Upload the database-export-genie folder to /wp-content/plugins/, or install it from the Plugins screen.
  2. Activate it (Network Activate on multisite).
  3. Go to Tools Database Backups (multisite: Network Admin Settings Database Backups) and click Create backup.

Preguntas frecuentes

Who can create, download and delete backups?

Only users with the Administrator role (on multisite: Super Admins). Other roles never see the page, even if a role editor gave them the «manage_options» capability, because a database backup contains every password hash and secret key on the site. WP-CLI commands work for anyone with shell access to the server.

How do I restore a backup?

Unzip it. Inside you’ll find database.sql (or database.part-001.sql, database.part-002.sql, … for large sites) and IMPORT-README.txt, which explains each option:

  • phpMyAdmin or Adminer: Import choose the file (import parts in numeric order).
  • Command line: mysql -u USER -p DBNAME < database.sql
  • WP-CLI: wp db import database.sql

Multiple parts can be joined first: cat database.part-*.sql > database.sql (Windows: copy /b database.part-*.sql database.sql). Moving to a new domain? Run a serialized-safe search-replace after importing, for example wp search-replace 'https://old.example' 'https://new.example' --all-tables.

Where are backups stored? Can anyone download them?

In wp-content/dbmg-backups-<random>/ (or the uploads folder if wp-content isn’t writable). Only administrators can download a backup, through wp-admin with a login and a per-link security check; the zip’s own URL is never shown. The folder is blocked from the web in several independent ways, and each one fails closed:

  • .htaccess denies every request on Apache 2.2 and 2.4 and LiteSpeed, plus a rewrite rule for OpenLiteSpeed. If the host doesn’t allow a directive, Apache answers 500 for the folder, which still serves nothing.
  • web.config blocks every file on IIS (request filtering).
  • An empty index.html stops folder listings on any server.
  • Backup files are owner-only (0600). Where the web server runs as a different user than PHP (most control panels and managed Nginx hosts), it can’t read them even without a rule.
  • The folder name and every file name contain long random tokens (more than 150 bits together).

The plugin checks all of this from the outside: it puts a test .zip, .sql and .json file in the folder and requests them over HTTP. If any of them comes back, the Storage section and Tools Site Health show a warning with the exact fix for your server.

The safest setup stores backups outside the web root. Add this to wp-config.php (the plugin suggests a path when it finds one):

define( 'DBMG_BACKUP_DIR', '/home/you/private/db-backups' );

I use Nginx. What should I add?

Nginx ignores .htaccess. Add this to your server block and reload Nginx (the plugin shows the same snippet with your real path if it finds the folder public):

location ^~ /wp-content/dbmg-backups- { deny all; }

Use ^~ as shown, not a regular-expression location: Nginx uses the first regex location that matches, so an earlier rule such as location ~* \.(zip|gz)$ would win over a regex deny.

If you use the dbmg_download_xsendfile filter (X-Accel-Redirect / X-Sendfile), the web server itself reads the zip, so also return a mode it can read from the dbmg_file_mode filter, for example 0640.

Does the backup really keep running if I close the tab?

Yes, on most servers: the backup runs in short server-side steps that start each other. If your host blocks that, WP-Cron takes over; if WP-Cron is also disabled, the backup advances whenever any WordPress admin page is open (the plugin tells you before you start). You can always finish it with wp dbmg run.

Is the backup a point-in-time snapshot?

Small sites (under about 20 MB of SQL on MySQL/MariaDB) are exported inside a single consistent snapshot when the whole export finishes in one step, which is the usual case. Larger backups are exported in chunks while the site stays live, so rows written during the backup may or may not be included — the same trade-off every PHP-based backup plugin makes. backup-info.json inside the zip says which kind you got. For a frozen copy of a busy store, put the site in maintenance mode first.

My host has a 30 second time limit and 64 MB of memory. Will it work?

That’s what it’s built for. Each step uses at most 40% of max_execution_time (never more than 20 seconds), stops at 70% of the memory limit, and resizes its batches automatically. If a step is killed anyway, the next one resumes from the last saved point and throws away any half-written data.

What happens when I uninstall the plugin?

All of its settings are removed. Your backups are kept, unless you ticked «Also delete all backups when the plugin is uninstalled» in the Storage section — deleting someone’s only backup silently would be worse than leaving files behind. If you install the plugin again later, it finds the backups it left behind and lists them again. Deactivating the plugin cancels a running backup and keeps finished ones.

Which databases are not supported?

PostgreSQL (PG4WP), SQL Server and other non-MySQL servers. The page tells you if it detects one.

Reseñas

No hay reseñas para este plugin.

Colaboradores y desarrolladores

«Database Export Genie» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

Traduce «Database Export Genie» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

3.0.1

  • New plugin directory banner and icon. No code changes.

3.0.0

  • First release.