BackupEase

Description

Tired of WordPress backups that time out or fail on shared hosting? BackupEase is built to just work, reliably.

  • Never times out: Automatically uses WP-CLI when available, or falls back to chunked PHP, so your backup finishes on any server.
  • Runs itself: Schedule automatic backups to Google Drive, with a rolling history and retention per storage provider.
  • Move fast: Migrate an entire site to a new host in minutes with one-click migration (BackupEase Pro).

BackupEase is a powerful yet user-friendly WordPress backup plugin that protects your website data with automated backups, flexible scheduling, and multiple storage options. BackupEase combines intelligent backup technology with an intuitive interface to make website protection effortless.

Key Benefits

  • Intelligent Backup System: Uses WP-CLI when available for the fastest backups, otherwise runs in pure PHP on any host
  • Flexible Scheduling: Daily, weekly, or monthly automated backups at your preferred time
  • Multiple Storage Options: Local storage and Google Drive built in; unlock FTP, SFTP, OneDrive, Dropbox and S3-compatible storage with BackupEase Pro
  • Smart Exclusions: Exclude unnecessary files and folders to save time and space
  • Real-Time Progress: Monitor backup progress with detailed status updates
  • WP-CLI Integration: Background processing for large sites without timeout issues
  • Google Drive Storage: Upload backups to Google Drive with OAuth integration
  • Backup Retention: Auto-delete old backups by count, age, or both – per storage provider
  • Encrypted Credentials: Your Google Drive login details are encrypted, never stored in plain text
  • Works on Any Host: No shell access, no configuration – it just works

Features

Backup Methods

  • Manual Backup: Create a backup anytime with a single click.
  • Scheduled Backup: Set it and forget it – daily, weekly, or monthly.
  • Works on Any Host: Automatically uses WP-CLI when available for speed, or pure PHP when it isn’t – no shell access needed, no timeouts.
  • Full Site Backup: Complete database and file backups, so nothing gets left behind.

Easy to Manage

  • Backup History: See every backup, with status, size, and method, from one dashboard.
  • One-Click Downloads: Download your database or files anytime.
  • Live Progress: Watch your backup happen in real time and cancel it if you need to.
  • Backup Log: A clear, timestamped record of everything BackupEase has done.
  • Retry Failed Uploads: If an upload fails, retry it with one click instead of running the whole backup again.
  • Preview Before Cleanup: See exactly which old backups will be removed before it happens.

Reliable Scheduling

  • Flexible Schedules: Daily, weekly, or monthly, at whatever time works for you.
  • Timezone-Aware: Backups run on your site’s actual time, not a server default.
  • Email Notifications: Get an email when a scheduled backup succeeds or fails, so you’re never caught off guard.

Storage & Retention

  • Local & Google Drive Storage: Keep backups on your server, off-site on Google Drive, or both.
  • Encrypted Credentials: Your Google Drive connection details are encrypted, never stored in plain text.
  • Automatic Retention: Old backups are cleaned up automatically by count, age, or both – set separately for each storage location, so you’re never paying for storage you don’t need.
  • Exclude What You Don’t Need: Skip cache and other unnecessary folders to keep backups fast and small.

Built for Reliability

  • Adjustable Speed: Choose how intensive a backup is, to match your server’s limits.
  • No Timeouts: Large sites are processed in chunks, so backups finish even on tight hosting plans.
  • Background Processing: With WP-CLI, backups run in the background so they’re not tied to your browser staying open.

For Developers

Important Disclaimer

This plugin creates backups of your WordPress installation. While we strive to maintain reliability and stability:

  • Backup performance depends on your server configuration, hosting environment, and site size
  • Large sites may require longer backup times depending on the aggressiveness setting
  • We strongly recommend testing the plugin in a staging environment first
  • Always verify that backups are created successfully before relying on them
  • Maintain regular backups and store them in multiple locations

Server Compatibility Notice

Different server configurations may affect the plugin’s functionality:

  • WP-CLI (optional): Faster backups for HTTP-initiated runs require WP-CLI plus the shell_exec function. Driving WP-CLI from system cron requires only SSH access.
  • PHP Backup Runner: Works on every server, no shell access required. May take longer for very large sites.
  • Shared Hosting: May have restrictions on execution time and memory
  • Storage Space: Ensure adequate disk space for backup files
  • .htaccess: Some features may require Apache or compatible web servers
  • File Permissions: Proper permissions required for backup file creation

If you experience any issues, please check with your hosting provider about server limitations.

External services

This plugin connects to Google Drive (an external service) only when you explicitly enable and configure Google Drive as a storage provider in the plugin settings. No data is sent externally for core backup functionality (local backups).

Google Drive API

  • What the service is: Google’s cloud storage API, used to upload backup archives to your own Google Drive account.
  • What it is used for: Off-site storage and retrieval of your backup .zip / .sql files, plus listing and deleting previously uploaded backups for retention cleanup.
  • What data is sent:
    • The backup archive file contents, uploaded to a folder named “BackupEase” created by this plugin in your own Drive.
    • The OAuth client ID and client secret you supply in Settings, used solely to exchange the authorization code for access / refresh tokens.
    • Minimal metadata required by the Drive API (file name, MIME type, parent folder ID).
  • When it is sent:
    • During the one-time OAuth connection flow when you click “Connect to Google Drive”.
    • Each time a backup completes and Google Drive is selected as a target.
    • When you run retention cleanup or retry a failed upload.
  • Account requirement: You must create your own Google Cloud project and provide your own Client ID / Client Secret. The plugin does not share a Google application with other users.
  • Endpoints contacted:
    • https://accounts.google.com/o/oauth2/v2/auth
    • https://oauth2.googleapis.com/token
    • https://www.googleapis.com/drive/v3/files
    • https://www.googleapis.com/upload/drive/v3/files
  • Google’s Terms of Service: https://policies.google.com/terms
  • Google’s Privacy Policy: https://policies.google.com/privacy
  • Google API Services User Data Policy: https://developers.google.com/terms/api-services-user-data-policy

Screenshots

Installation

Automatic Installation

  1. Log in to your WordPress admin panel
  2. Go to Plugins > Add New
  3. Search for “BackupEase”
  4. Click “Install Now” and then “Activate”
  5. Navigate to the BackupEase menu to configure your settings

Manual Installation

  1. Download the plugin zip file
  2. Log in to your WordPress admin panel
  3. Go to Plugins > Add New > Upload Plugin
  4. Choose the downloaded zip file and click “Install Now”
  5. Activate the plugin
  6. Navigate to the BackupEase menu to configure your settings

After Activation

  1. Go to the BackupEase menu in your WordPress admin
  2. Configure your backup settings (aggressiveness, exclusions, storage)
  3. Create your first manual backup to test the system
  4. Set up scheduled backups if desired
  5. Configure email notifications for scheduled backups

Important: The plugin will automatically detect if WP-CLI is available on your server. If WP-CLI is not available, BackupEase runs backups in pure PHP using chunked processing – no shell access required.

FAQ

Do I need WP-CLI to use BackupEase?

No, WP-CLI is optional. BackupEase automatically detects if WP-CLI is available and uses it for optimal performance when backups are triggered from the admin UI. If WP-CLI is not available, the plugin runs backups in pure PHP using chunked processing – no shell access required. SSH-equipped users can also paste the per-schedule crontab line shown in the Scheduled Backups tab to drive wp backupease run directly from system cron, bypassing PHP request timeouts entirely.

How long does a backup take?

Backup time depends on your site size and server resources. Small sites (< 1GB) typically complete in minutes. Large sites may take longer. The aggressiveness setting controls how intensive the backup process is.

Where are backups stored?

By default, backups are stored on your server in a folder inside wp-content/uploads whose name ends in a long random code, for example, wp-content/uploads/backupease-a7f3…/staging. The random part is unique to your site and keeps the folder from being found by anyone browsing your site. You can also configure Google Drive integration to store backups off-site.

Can I exclude certain files from backups?

Yes, you can configure file and folder exclusions in the Settings tab. Common exclusions include cache directories, staging directories, and temporary files.

What happens if a backup fails?

If a scheduled backup fails, you’ll receive an email notification (if enabled). You can view the error details in the backup history. Failed backups can be retried manually.

Can I cancel a running backup?

Yes, you can cancel a backup in progress using the Cancel button on the progress bar. This will stop the backup process and clean up temporary files.

How do I restore a backup?

Currently, BackupEase focuses on creating backups. You can download the database (.sql) and files (.zip) separately and restore them manually or use your hosting control panel’s restore tools. Automated restoration is planned for a future release.

Does BackupEase work on WordPress Multisite?

Basic compatibility exists.

Practical implications if you run it on Multisite:
– Network-activate or per-site activate – both work, but admin UI appears under each subsite’s admin (no Network Admin page).
– Backups will include everything (good for disaster recovery, bad if you wanted per-subsite isolation).
– Restoring would restore the entire network from one archive – there’s no per-subsite restore.
– Scheduled backups configured on subsite A won’t be visible from subsite B; each site has its own schedule list.

How are my Google Drive credentials protected?

BackupEase encrypts your Google Drive OAuth tokens and client secret at rest using AES-256-CBC. The encryption key is derived from your WordPress secret keys. Existing plaintext credentials are automatically migrated to encrypted form the first time you save settings.

Why is WP-CLI mode not activating even though WP-CLI is installed?

BackupEase requires PHP’s exec() function to be enabled in addition to WP-CLI being installed. This is because WP-CLI’s wp db export command calls exec() internally. If exec() is disabled via disable_functions in your server’s php.ini, BackupEase will automatically fall back to PHP chunked mode. You can check your server’s detected capabilities on the Settings page.

Can I keep separate backup retention policies for local and Google Drive storage?

Yes. BackupEase supports per-provider retention settings. You can keep more local backups (e.g., 10) while keeping fewer on Google Drive (e.g., 3), or configure different age-based policies for each location. Configure these in Settings Backup Retention.

Does this plugin contact external services?

Only if you enable Google Drive as a storage target. In that case the plugin communicates with the Google Drive API to upload, list, and delete your backup files in your own Drive account, and with Google’s OAuth 2.0 endpoints to authenticate. Nothing is sent externally for local-storage backups. See the “External services” section above for full details, including what data is sent and links to Google’s Terms of Service and Privacy Policy.

Is there a Pro version?

Yes. BackupEase Pro is an add-on that runs alongside the free plugin, from the same dashboard. It needs the free plugin installed and active.

More storage destinations:

  • FTP
  • SFTP
  • Microsoft OneDrive
  • Dropbox
  • S3-compatible (Amazon S3, DigitalOcean Spaces, Backblaze B2, or Wasabi)

Advanced scheduling:
Create as many named schedules as you need, each with its own frequency (from hourly up to monthly), time of day, scope of a database, files or both, storage destinations, and notification address.

One-click migration:
Move a WordPress site to another server without FTP access to the source. Generate a key on the old site, paste it on the new one, and the files, database, URLs, and wp-config.php are all handled for you.

Automatic updates delivered from PrecisionWP once your license is activated.

Where can I get support?

For support, please visit our support page or contact us through the plugin’s support forum.

Support Resources:

Unlock all Pro features with BackupEase Pro.

Reviews

August 3, 2026
WP-CLI support is great – the ready-to-paste crontab line for each schedule makes running backups from the terminal easy, without worrying about PHP timeouts. Exactly what I was looking for.
Read all 0 reviews

Contributors & Developers

“BackupEase” is open source software. The following people have contributed to this plugin.

Contributors

Translate “BackupEase” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

2.2.3

  • Added: BackupEase now checks your storage connections once a day and emails you as soon as one stops working, instead of you finding out days later when a backup fails.
  • Added: A Settings button to change the Folder ID of a storage service you are already connected to.
  • Fixed: Your backups could be downloaded by anyone who knew where to look. BackupEase kept them in a fixed, predictable folder and relied on a protection file that Apache servers obey but nginx and IIS servers ignore. On those servers, a visitor who was not logged in could read your database backup and your site files, which include your site’s passwords and settings. Backups are now kept in a folder whose name ends in a long random code that cannot be guessed, so they are protected on every type of server. Your existing backups are moved into the new folder automatically and stay in your Backup Log. Thanks to Ananda Dhakal of Patchstack for reporting this.
  • Fixed: When a backup fails, the activity log now tells you the full story: which backup it was, how far it got, what it managed to create, and exactly what each storage service said went wrong.
  • Fixed: On some hosts, a scheduled backup would say, “Backup started” and then stop at 5% and stay there. These hosts block the tool BackupEase normally uses to run a backup in the background, so nothing was left to carry the backup forward once the browser was out of the picture. Scheduled backups on these hosts now carry themselves forward step by step and finish on their own.
  • Fixed: A backup that got stuck and was given up on after 10 minutes now explains what happened instead of just saying it stopped unexpectedly.
  • Fixed: You now get a failure email when a backup is built, but none of your storage services will accept it.
  • Fixed: A backup that could not start because a storage connection had expired now appears in the Backup Log, instead of only in the log file.
  • Fixed: Google Drive kept disconnecting every 7 days. This happens when your Google app is left in “Testing” mode, which Google cuts off after a week. The setup guide now tells you to publish your app, which takes one click and does not need a review from Google, and the connection then stays active.
  • Fixed: When Google disconnected, BackupEase told you that your authorization code had expired and to connect again, which only bought you another week. It now explains what actually happened and how to stop it from happening again.
  • Fixed: Some error messages appeared as “An unknown error occurred” instead of saying what actually went wrong. Every message BackupEase sends to the screen now comes through in full.
  • Fixed: Clicking Download twice in a row on the same backup could log a harmless PHP warning on some hosts. This did not affect the download itself.
  • Fixed: A backup sent to FTP, SFTP, OneDrive, Dropbox, or S3-compatible storage said nothing about the upload while it was happening, and a files-only backup left no record of it at all in either the progress log or the activity log. Every storage service now reports when its upload starts and when it finishes, the same way Google Drive always has.
  • Fixed: On hosts that run backups in PHP mode, a backup sent to FTP, SFTP, OneDrive, Dropbox, or S3-compatible storage could send your files successfully and then sit at the final step until it was given up on ten minutes later. It now finishes as soon as the upload is done.
  • Improved: A failed backup is now correctly shown as Full, Database, or Files in the Backup Log.
  • Improved: A scheduled backup no longer gives up completely when one storage service is unavailable. It now saves to the ones that are working and tells you which it had to skip. Before, an expired Google Drive connection also cost you the copy kept on your own server.
  • Improved: Settings Storage now has a more consistent look across all storage services.
  • Improved: Settings Storage now shows every storage service BackupEase can use, including the ones in BackupEase Pro (FTP, SFTP, OneDrive, Dropbox, and S3-compatible). Without Pro, they are greyed out and marked “Pro”, so you can see what is available at a glance.
  • Improved: A manual backup now checks your storage services before it starts, so you find out about a broken connection at the click instead of half an hour later when the finished backup has nowhere to go. If one service is unavailable, the backup still runs and saves to the rest.
  • Improved: Google Drive uploads are now resumable whatever the size of the backup. A small file used to be sent in one go, so a dropped connection meant starting it again from the beginning.
  • Improved: BackupEase now renews its Google Drive access before it lapses rather than after, which saves a wasted round trip at the start of every backup.
  • Improved: Old failed backup entries are now cleared out of the Backup Log during the regular tidy-up. The 20 most recent are kept, and anything older than 90 days is removed, so the log stays readable.
  • Improved: Storage services are now named properly in the logs. FTP, SFTP, and S3 Compatible used to appear as “Ftp”, “Sftp” and “S3compatible”.
  • Updated: Translations template.

2.2.2

  • Fixed: On Windows setups (Local, WAMP, XAMPP, IIS), every completed backup was deleted moments after it finished, with no error shown – the tidy-up that runs after each backup mistook the brand-new files for leftovers. Backups now stay put and show their correct size; backups already lost to this cannot be recovered.
  • Fixed: On servers where WP-CLI isn’t available, “%” characters were not always preserved in the database backup file. This could affect permalinks that use non-Latin characters (Hebrew, Arabic, Cyrillic, and similar) and page-builder content stored as serialized data, such as Elementor layouts. Backups now store these values exactly as they appear in your database – if you have backups from before this update, we recommend taking a fresh one.
  • Fixed: On some hosts, a backup could get stuck at the very beginning and never move past “Starting WP-CLI background process”. These hosts keep your site’s security keys in a separate file next to wp-config.php, and the background process was started from the wrong folder, so it couldn’t find that file and stopped before it even began. It now starts from your site’s main folder, so the file is always found.
  • Fixed: On Hostinger, starting a backup could fail right away with just “An unknown error occurred”, and nothing useful in the log. These hosts fully remove a server function BackupEase normally uses to launch WP-CLI backups, and the plugin wasn’t checking for that before trying to use it, causing a crash instead of a graceful switch to its PHP-based backup method. BackupEase now checks for this correctly, so the backup runs in PHP mode instead of failing.
  • Fixed: Clicking “Cancel” on a running backup would report success and say its temporary files were deleted, but the backup kept running in the background and made further progress anyway. Cancel now reliably stops the backup and cleans up its files.
  • Fixed: In rare cases a backup that produced no files at all could be recorded in your history as if it had succeeded.
  • Fixed: Clicking “Run Now” on a schedule could look like nothing happened. The progress bar it uses lived on the Dashboard tab, so it stayed out of sight, and when the backup couldn’t start, no reason was shown. You are now taken to the progress bar, and if the backup can’t start, you get a message telling you why.
  • Improved: Backups now check their storage destinations before they start – Google Drive, and with BackupEase Pro also FTP, SFTP, OneDrive, Dropbox and S3-compatible storage. If a connection has expired or was never finished, you’re told straight away instead of waiting for the whole backup to be built and only then failing at the upload step. This applies to both “Run Now” and backups that run automatically on their schedule.
  • Improved: Background backups no longer load your theme. They don’t need it, and it’s one less thing that can interrupt a backup.

2.2.1

  • Fixed: Some scheduled backups completed successfully but didn’t show up in Recent Backups. Backups are now reliably recorded every time, and a clear error is logged in the rare case a backup record still can’t be saved.
  • Fixed: A “file not within allowed path” warning could appear on the Recent Backups and Backup Log screens after moving or cloning a site (for example, promoting a staging site to production).
  • Fixed: Fatal error on PHP 7.4 (“must be an instance of BackupEase\mixed”) caused by a PHP 8.0-only mixed type declaration on Plugin::get_settings() and Plugin::wp_recursive_sanitize(). The plugin now loads correctly on PHP 7.4 as documented.
  • Fixed: Backups could fail to start if the path to WP-CLI contained a space.
  • Fixed: Some UI issues.
  • Fixed: A scheduled backup started via wp backupease run --schedule=<id> would run even if the schedule was disabled/paused in the UI; WP-CLI now checks the schedule’s enabled state just like WP-Cron does.
  • Fixed: The cleanup summary counted a backup once for every destination it was stored to, so “Deleted X old backup(s), kept Y backup(s)” reported a backup saved to three places three times. Each backup is now counted once.
  • Improved: WP-CLI is now detected on more hosts, including many shared hosting setups.
  • Improved: Clearer message when WP-CLI is installed, but your host blocks it.
  • Improved: In Settings Retention, each storage provider’s retention options (Google Drive, Local Server) now only show up when that provider is selected as a storage destination.
  • Improved: Consolidated design guide to PrecisionWP.css
  • Security: The WP-CLI Path setting is now checked before it is saved.
  • Added: New filter for developers to set a custom WP-CLI location.
  • Added: New filters for developers to add their own storage providers to the retention cleanup run and supply each one’s keep-count/keep-days policy.
  • Added: New settings field for email notifications theme (light or dark).
  • Updated: Translations template.

2.2.0

  • Fixed: Issue with download ZIP file in some cases.
  • Fixed: Backup Summary destinations text.
  • Fixed: UI fixes.
  • Fixed: A folder could be left out of a backup by mistake when its name simply started with the name of an excluded folder (for example, “cacheplus” being treated like the excluded “cache”). Exclusions now match the intended folder only.
  • Fixed: Manual backups now always skip the cache, staging, and backup-storage folders automatically – just like scheduled backups do – so an in-progress backup can never accidentally be packed into itself.
  • Fixed: Exclusion paths typed with a leading or trailing slash (e.g. “/wp-content/cache/”) are now saved in a consistent form so they reliably exclude the right folder.
  • Fixed: Live backup log shows more accurate information.
  • Added: Google Drive connection wizard.
  • Improved: Added domain name to the backup files.
  • Improved: Faster admin pages. The automatic check for leftover folders from other backup/migration plugins now runs at most once per hour instead of on every admin page load.
  • Improved: Faster backups on sites with large excluded folders. Excluded folders are now skipped entirely instead of being scanned file by file.
  • Updated: Translations template.

2.1.0

  • Added: Every scheduled backup now shows a ready-to-paste cron line. If you have SSH access to your server, you can run any backup schedule straight from your server’s crontab – no PHP timeouts to worry about.
  • Added: A new WP-CLI flag, wp backupease run --schedule=<id>, runs any saved schedule from the command line.
  • Improved: Smarter auto-detection of leftover folders from other backup and migration plugins (UpdraftPlus, Duplicator, BlogVault, WP Time Capsule, WPvivid, All-in-One WP Migration). They show up pre-excluded in your exclusion list, so they don’t bloat your backups – uncheck any of them if you want a fully comprehensive backup.
  • Improved: Friendlier wording when WP-CLI isn’t installed. Backups still run reliably in pure PHP – that’s a normal, supported setup, not a fallback.
  • Improved: The “How to enable WP-CLI” guide is tucked into an “Advanced” section, so it stays out of the way until you need it.
  • Updated: Translations template.

2.0.0

  • Redesign release: Brand-new dark-theme admin UI with the “moss” accent palette across the Dashboard, Manual Backup, Scheduled Backups, Backup Log, License, and Settings tabs.
  • Fixed: A backup that failed to upload to every configured storage destination was incorrectly reported as “complete”. Such a backup is now correctly marked as failed, so failure notifications fire, and the local copy is kept for a retry.
  • Fixed: A corrupted or zero backup-retention value (by count or by age) could cause a cleanup to delete every backup for that storage provider. Retention now falls back to safe defaults instead of removing everything.
  • Fixed: Resuming an interrupted Google Drive upload could miscalculate the resume position when Google did not return a progress header, stalling the upload. The resume offset is now tracked reliably.
  • Fixed: Database dump chunks are now verified to be fully written to disk. A partial writing (for example, when the server runs out of disk space) is treated as an error instead of silently producing a truncated .sql file.
  • Improved: Backup progress is now read using a blocking lock and re-read once on a partial read, so the live progress display no longer briefly resets while a backup is updating its status.
  • Fixed: Exclusions not showing on Scheduled Backups.
  • Fixed: Google Drive integration using saved settings value instead of current input.
  • Added: Dedicated Backup Log screen separated from the dashboard, with its own paginated table view.
  • Added: New License tab introducing the BackupEase Pro upgrade path.
  • Improved: More accurate server-capability detection: ServerCapabilities now explicitly checks PHP exec() availability and reports whether WP-CLI wp db export can run, falling back to PHP chunked mode automatically when it cannot.
  • Improved: More reliable WP-CLI detection using a recheck transient so capability changes on the host are picked up without manual reactivation.
  • Improved: Hardened settings persistence.
  • Improved: Better Pro plugin support.
  • Updated: Translations template.

1.0.0

  • Initial release of BackupEase