No nonsense WordPress backup and restore. Backs up your database, media, plugins, and themes into a single zip file. Scheduled or manual, with safe restore and maintenance mode. Completely free.
No subscriptions. No cloud storage dependencies. No accounts. No upsells.
Full write up with screenshots: CloudScale Free Backup and Restore
- WordPress database (all posts, pages, settings, users, comments)
- Media uploads (
wp-content/uploads) - Plugins folder (
wp-content/plugins) - Themes folder (
wp-content/themes)
- Must use plugins (
wp-content/mu-plugins) - Languages and translation files (
wp-content/languages) - wp-content dropin files (
object-cache.php,db.php,advanced-cache.php) .htaccess(Apache rewrite rules and custom security directives)wp-config.php(optional, unchecked by default, flagged with a warning)
Each backup is a single zip containing a database.sql dump, the selected folders, and a backup-meta.json recording plugin version, WordPress version, site URL, table prefix, and what was included.
The plugin detects whether mysqldump is available on your server. If it is, it uses native mysqldump for speed and reliability. If not (common on shared hosting), it falls back to a pure PHP implementation that streams through every table and writes compatible SQL.
Files are added using PHP ZipArchive extension. The plugin walks each selected directory recursively and streams directly in PHP with no exec() calls and no timeout risk.
Backups are stored in wp-content/cloudscale-backups/. On first run the plugin creates this directory with an .htaccess file containing Deny from all to prevent direct web access. A direct URL to a backup zip returns a 403.
Uses WordPress Cron (wp_cron). Pick which days and what hour (server time), and the plugin registers a recurring event. On low traffic sites the backup may run a few minutes after the scheduled time. For exact timing, add a real server cron job that hits wp-cron.php directly.
Controls how many backups to keep (default: 8, range: 1 to 9,999). After each backup, the plugin deletes the oldest files beyond your limit. A live storage estimate with traffic light indicator (green, amber, red) shows whether your disk space is comfortable, getting tight, or at risk.
- WordPress 6.0 or higher
- PHP 8.1 or higher
- ZipArchive PHP extension (available on virtually every PHP installation)
- Download the latest release zip from the Releases page
- In WordPress admin go to Plugins > Add New > Upload Plugin
- Upload the zip file, click Install Now, then Activate Plugin
- Go to Tools > CloudScale Backup and Restore
No API keys. No account creation. No configuration wizard.
Deactivate > Delete > Upload zip > Activate.
Under the Backup Schedule card, enable automatic backups and tick the days you want. Default is Monday, Wednesday, and Friday at 03:00 server time. Click Save Schedule.
Under Retention and Storage, decide how many backups to keep. Watch the storage estimate. A reasonable starting point is 10 backups: nearly two weeks of daily coverage or about a month of Mon/Wed/Fri.
Under Manual Backup, tick the components you want and click Run Backup Now. On most sites the first full backup takes 30 seconds to a few minutes depending on media library size.
The Backup History card lists all backups with filename, size, age, and type. Each backup has Download and Restore actions.
Download streams the zip to your browser for offsite storage or migration to a new server.
Restore unpacks the zip in place. The database is restored from the SQL dump (using native mysql CLI if available, otherwise PHP). File directories are extracted to their original locations. The plugin reads backup-meta.json to verify compatibility before proceeding.
No remote storage. Backups are stored locally. If your server dies, your backups die with it. Periodically download backups to your own machine or push them to S3, Backblaze, or wherever.
No multisite support. Designed for standard single site WordPress installations.
No incremental backups. Every backup is a full backup. This keeps the code simple and the restore process reliable.
The plugin can optionally back up wp-config.php, but it is unchecked by default and flagged with a warning. This file contains database credentials and secret keys.
Include it in occasional deliberate full disaster recovery backups that you keep securely. Leave it unchecked in daily automated backups.
GPLv2 or later. See LICENSE for the full text.
Andrew Baker - CIO at Capitec Bank, South Africa.