Fiction DraftsWordPress backup plugin

WordPress plugin · v0.1.0 · GPL-2.0

Backups that finish, even when the request doesn't.

Fiction Drafts copies your database, your files, or both into downloadable .zip volumes. Each stage does a bounded amount of work and records where it got to, so a backup of a large site doesn't depend on one long request surviving.

  • WordPress 6.4+
  • PHP 8.1+
  • Tested to 7.1
  • No external requests
Backup in progressProfile: Everything
  1. 1Checking there is room
  2. 2Exporting the database
  3. 3Scanning files
  4. 4Building the archive
  5. 5Finishing up
0%queued

Scope in 0.1.0

This release only exports.

0.1.0 has no import path, no unzip-into-place, no URL rewriting, and it runs no UPDATE or DROP against your content. The boundary is enforced by a test, not by intention: an automated check scans the source for the constructs a restore path would need and fails the build if one appears in this version.

The practical consequence is the point. Installing 0.1.0cannot damage your site's data, because nothing in it writes to your site's content. Database restore is on the roadmap, and when it lands it will be its own deliberate screen with its own confirmation — see what's next.

Not in this release

  • import
  • restore
  • URL rewrite
  • UPDATE
  • DROP

What it does

Six things, done properly.

  • Five profiles

    Everything, Database only, Files only, Files without media, or Custom — tick the areas yourself and anything you leave unticked stays out.

  • A resumable pipeline

    Five named stages, each doing a bounded amount of work and recording where it got to. If PHP hits its time limit, the next pass picks up from the saved position instead of starting again.

  • Split volumes

    Choose a size, so a multi-gigabyte site does not become one file your host refuses to serve. Each volume is a complete, independently checksummed zip.

  • Checksums and a manifest

    A SHA-256 per volume, plus a record of what went in — WordPress version, PHP version, active plugins, table list, byte counts. You can tell a good copy from a truncated one without opening it.

  • Downloads that resume

    The endpoint honours HTTP Range, so a connection that drops at 80% picks up where it stopped. curl -C -, wget -c, or any download manager.

  • A retention sweep

    Keep the newest N backups and delete the rest automatically — or set it to 0 and keep every one, managed by hand.

Why another one

Four choices most backup plugins do not make.

  • Export and restore stay separate

    0.1.0 has no restore path at all, so the plugin that is protecting your site cannot be the thing that damages it. When restore does arrive it will be a separate, opt-in screen — never something the export flow can trigger on its own.

  • wp-config.php is excluded by default

    That file holds your database password and all eight authentication salts. Including it is a decision you make per backup, deliberately — not a setting you switch on once and forget about.

  • Download links are single-use, expiring and hashed

    The plugin's own job is to put wp_options into a downloadable archive. A download credential kept in plaintext would be copied — still valid — into the very backup it authorises. Only the sha256 of a token is ever stored.

  • The archive is verifiable

    Per-volume checksums and a manifest mean you can tell a good copy from a truncated one before you need it. A zip keeps its index at the end, so a cut-short download is not a partial backup — it is a file that will not open at all.

The screen

Five tabs. Nothing on your front end.

Fiction Drafts adds one screen to your admin menu and registers no front-end hooks at all. Everything that screen can do is also available over REST.

example.com/wp-admin/admin.php?page=fiction-drafts#/
The New backup tab: five profile choices, with Everything selected and the wp-config.php box unticked.
01Pick a profile and start. wp-config.php stays out unless you tick it for this one backup.

Roadmap

What's next.

None of this is in 0.1.0. It is what is queued, and the order is not fixed — the Feature Request tab in the plugin is where the ordering actually gets decided.

  • Google Drive and Dropbox

    Screen shipped

    Send finished backups straight to cloud storage, so a completed backup isn't waiting on you to remember to download it. Both destinations already have their cards in the plugin under Advanced Backups, badged Coming soon — the connection and upload work is what's still ahead.

  • Database restore

    Planned

    A path back from an archive. It will arrive as its own screen with its own confirmation step, kept deliberately separate from the export flow — so restoring stays something you choose, never something a backup can set off by itself.

  • Better custom backups

    Planned

    More precision than today's broad areas: choose the directories and the tables that go into a Custom profile, and save that selection so you aren't rebuilding it every time.

  • Scheduled automatic backups

    Planned

    Set a cadence and let the queue run it. Action Scheduler already does the background work for every backup, so a schedule is a matter of deciding when to enqueue — not of building a second engine.

Want something that isn't on this list? The Feature Request tab goes straight to jdavid.gaitan@gmail.com.

No telemetry. No account. No key. No remote assets.

Fiction Drafts contacts no external server of any kind. It makes no API calls and loads no remote fonts, scripts or images. Every byte it produces stays on your own filesystem until you download it — there is no data for a privacy policy to describe, because none leaves your site.

Ready when your host isn't.

Install it the ordinary way. The archive is self-contained — the autoloader, the bundled Action Scheduler and the compiled admin screen are all inside it, so nothing needs to be built on the server.

Download v0.1.0View source on GitHub

GPL-2.0-or-later · 452 KB zip