Ready to get started?Download WordPress

Plugin Directory


Simple automated backups of your WordPress powered website.


  • Reverts a change to how the home path is calculated as it caused issues on installs where wp-config.php was stored outside of web root. Props to @mikelittle for the bug report.


  • Bump minimum WP requirement to 3.7.3, the latest security release on the 3.7 branch.
  • Fix an issues that could cause schedule times to fail to account for timezone differences.
  • Add a nonce check to the schedule settings.
  • Fix a possible JS warning when removing an exclude rule.
  • Our unit tests now run in PHP 5.2 again.


  • It's now possible to choose the time and day that your schedule will run on.
  • Introduces several new unit tests around schedule timings.
  • Fixes a bug that could cause the hourly schedule to run constantly.
  • Improved the layout of the Constants help panel.
  • If the backup root directory is unreadable then the plugin will no longer function.
  • Update the backups table match the standard WordPress table styles.
  • Improved styling for the settings dialogue.
  • Improved styling for the Server Info help tab.
  • /s/back ups/backups.
  • Remove Deprecated call to screen_icon.
  • Updated French translation.
  • Update the WP CLI command to use the new method for registering command.
  • Reload the schedules when re-setting up the default schedules so they show up straight away.
  • s/dpesnt't/doesn't.
  • Only show the estimated total schedule size when editing an existing schedule.
  • Stop stripping 0 from the minutes on hourly backups so that backups at 10 (& 20, etc.) past the hour correctly show.
  • Disable buttons whilst ajax requests are running.
  • Move spinners outside the buttons as they didn't look very good inside.
  • Improve the detection of the home path on multisite installs which have WordPress in a subdirectory.
  • Track the time that the running backup is started and display how long a backup has been running for.
  • Fix an issue that meant it wasn't possible to run multiple manual backups at the same time.
  • Many other minor improvements.


  • BackUpWordPress now requires WordPress 3.7.1 as a minimum.
  • Remove some old back-compat code that was required because we supported older WP versions.
  • It's now possible to change the email address that notification emails are sent from using the hmbkp_from_email filter.
  • The spinner is now retina!
  • Close the PHP Session before starting the backup process to work around the 1 request per session issue. Backup status will now work on sites which happen to call session_start.
  • Pass max_execution_time and the BackUpWordPress Plugin version back to support. * Include the users real name in support requests
  • Stop passing $_SERVER with support requests as it can contain things like .htaccess passwords on some server configurations.
  • Improve the display of the server info in the enable support popup.
  • New screenshots
  • Use wp_safe_redirect for internal redirects.
  • Use wp_is_writable instead of is_writable.


  • In WordPress Multisite the backups admin page is now located in Network admin instead of the wp-admin of the main site.
  • Fixed an issue with the new intercom support integration that could cause loading the backups page to timeout
  • Fixed 3 stray PHP warnings.
  • BackUpWordPress will now always be loaded before any BackUpWordPress Extensions.
  • Fixed an issue that could cause a long modal (excludes) to show underneath the WP admin bar.


  • Add missing colorbox images


  • Support for new premium extensions for storing backups in a variety of online services.
  • Exclude the WP DB Manager backups and WP Super Cache cache directories by default.
  • We now use Intercom to offer support directly from within the plugin, opt-in of course.
  • More i18n fixes / improvements.
  • We no longer show download links if your backups directory isn't web accessible.
  • Fix a bug that caused the plugin activation and deactivation hooks from firing.
  • Correctly handle MYSQL TIMESTAMP columns in database dumps.
  • mysqldump and zip are now correctly recognised on SmartOS.
  • Schedule names are now translatable.
  • Avoid having to re-calculate the filesize when a schedules type is set.
  • Compatibility with WordPress 3.8


  • Correct version number.


  • Fix a PHP strict error.
  • Save and close as separate buttons.
  • Fix bug that caused multiple notification emails.
  • Fixes typo in database option name.
  • Updated translations.
  • Improve PHP docblocks.
  • Make schedules class a singleton.
  • Exclude popular backup plugin folders by default.
  • Exclude version control folders by default.
  • Fix broken localisation.
  • Use wp_safe_redirect instead of wp_redirect for internal form submissions


  • Replace Fancybox with Colorbox as Fancybox 2 isn't GPL compatible.
  • Use the correct HMBKP_ATTACHMENT_MAX_FILESIZE constant consistently in the help section.
  • Correct filename for some mis-named translation files.
  • Show the total estimated disk space a schedule could take up (max backups * estimated site size).
  • Fix a typo (your -> you're).
  • Use the new time Constants and define backwords compatible ones for > than 3.5.
  • Play nice with custom cron intervals.
  • Main plugin file is now backupwordpress.php for consistency.
  • Add Paul De Wouters (pauldewouters) as a contributor, welcome Paul!
  • Don't remove non-backup files from custom backup paths.
  • Fix a regression where setting a custom path which didn't exist could cause you to lose existing backups.
  • When moving paths only move backup files.
  • Make some untranslatable strings translatable.
  • Don't allow a single schedule to run in multiple threads at once, should finally fix edge case issues where some load balancer / proxies were causing multiple backups per run.
  • Only highlight the HMBKP_SCHEDULE_TIME constant in help if it's not the default value.
  • Remove help text for deprecated HMBKP_EMAIL.
  • Default to allways specificing --single-transaction when using mysqldump to backup the database, can be disabled by setting the HMBKP_MYSQLDUMP_SINGLE_TRANSACTION to false.
  • Silence a PHP Warning if mysql_pconnect has been disabled.
  • Ensure dot directories . & .. are always skipped when looping the filesystem.
  • Work around a warning in the latest version of MySQL when using the -p flag with mysqldunmp.
  • Fix issues on IIS that could cause the root directory to be incorrectly calculated.
  • Fix an issue on IIS that could cause the download backup url to be incorrect.
  • Fix an issue on IIS that could mean your existing backups are lost when moving backup directory.
  • Avoid a PHP FATAL ERROR if the mysql_set_charset doesn't exist.
  • All unit tests now pass under IIS on Windows.
  • Prefix the backup directory with backupwordpress- so that it's easier to identify.
  • Re-calculate the backup directory name on plugin update and move backups.
  • Fix some issues with how HMBKP_SECURE_KEY was generated.


  • Fix a fatal error on PHP 5.2, sorry! (again.)


  • Fix a parse error, sorry!


  • Fix a fatal error when uninstalling.
  • Updated translations for Brazilian, French, Danish, Spanish, Czech, Slovakian, Polish, Italian, German, Latvian, Hebrew, Chinese & Dutch.
  • Fix a possible notice when using the plugin on a server without internet access.
  • Don't show the wp-cron error message when WP_USE_ALTERNATE_CRON is defined as true.
  • Ability to override the max attachment size for email notifications using the new HMBKP_ATTACHMENT_MAX_FILESIZE constant.
  • Nonce some ajax request.
  • Silence warnings created if is_executable, escapeshellcmd or escapeshellarg are disabled.
  • Handle situations where the mysql port is set to something wierd.
  • Fallback to mysql_connect on system that disable mysql_pconnect.
  • You can now force the --single-transaction param when using mysqldump by defining HMBKP_MYSQLDUMP_SINGLE_TRANSACTION.
  • Unit tests for HM_Backup::is_safe_mode_available().
  • Silence possible PHP Warnings when unlinking files.


  • Stop storing a list of unreadable files in the backup warnings as it's too memory intensive.
  • Revert the custom RecursiveDirectoryIterator as it caused an infinite loop on some servers.
  • Show all errors and warnings in the popup shown when a manual backup completes.
  • Write the .backup_error and .backup_warning files everytime an error or warning happens instead of waiting until the end of the backups process.
  • Fix a couple of PHP E_STRICT notices.
  • Catch more errors during the manual backup process and expose them to the user.


  • Don't repeatedly try to create the backups directory in the uploads if uploads isn't writable.
  • Show the correct path in the warning message when the backups path can't be created.
  • Include any user defined auth keys and salts when generating the HMBKP_SECURE_KEY.
  • Stop relying on the built in WordPress schedules as other plugins can mess with them.
  • Delete old backups everytime the backups page is viewed in an attempt to ensure old backups are always cleaned up.
  • Improve modals on small screens and mobile devices.
  • Use the retina spinner on retina screens.
  • Update buttons to the new 3.5 style.
  • Fix a possible fatal error caused when a symlink points to a location that is outside an open_basedir restriction.
  • Fix an issue that could cause backups using PclZip with a custom backups path to fail.
  • Security hardening by improving escaping, sanitizitation and validation.
  • Increase the timeout on the ajax cron check, should fix issues with cron errors showing on slow sites.
  • Only clear the cached backup filesize if the backup type changes.
  • Add unit tests for all the schedule recurrences.
  • Fix an issue which could cause weekly and monthly schedules to fail.
  • Add an uninstall.php file which removes all BackUpWordPress data and options.
  • Catch a possible fatal error in RecursiveDirectoryIterator::hasChildren.
  • Fix an issue that could cause mysqldump errors to be ignored thus causing the backup process to use an incomplete mysqldump file.


  • Fix a regression in 2.1.2 that broke previewing and adding new exclude rules.


  • Fix an issue that could stop the settings panel from closing on save on servers which return '0' for ajax requests.
  • Fix an issue that could cause the backup root to be set to / on sites with site_url and home set to different domains.
  • The mysqldump fallback function will now be used if mysqldump produces an empty file.
  • Fix a possible PHP NOTICE on Apache servers.


  • Fix a possible fatal error when a backup schedule is instantiated outside of wp-admin.
  • Don't use functions from misc.php as loading it too early can cause fatal errors.
  • Don't hardcode an English string in the JS, use the translated string instead.
  • Properly skip dot files, should fix fatal errors on systems with open_basedir restrictions.
  • Don't call apache_mod_loaded as it caused wierd DNS issue on some sites, use global $is_apache instead.
  • Fix a possible double full stop at the end of the schedule sentence.
  • Minor code cleanup.


  • Stop blocking people with safe_mode = On from using the plugin, instead just show a warning.
  • Fix possible fatal error when setting schedule to monthly.
  • Fix issues with download backup not working on some shared hosts.
  • Fix issuses with download backup not working on sites with strange characters in the site name.
  • Fix a bug could cause the update actions to fire on initial activation.
  • Improved reliability when changing backup paths, now with Unit Tests.
  • Generate the lists of excluded, included and unreadable files in a more memory efficient way, no more fatal errors on sites with lots of files.
  • Bring back .htaccess protection of the backups directory on Apache servers with mod_rewrite enabled.
  • Prepend a random string to the backups directory to make it harder to brute force guess.
  • Fall back to storing the backups directoy in uploads if WP_CONTENT_DIR isn't writable.
  • Attempt to catch E_ERROR level errors (Fatal errors) that happen during the backup process and offer to email them to support.
  • Provide more granular status messages during the backup process.
  • Show a spinner next to the schedule link when a backup is running on a schedule which you are not currently viewing.
  • Improve the feedback when removing an exclude rule.
  • Fix an issue that could cause an exclude rule to be marked as default when it in-fact isn't, thus not letting it be deleted.
  • Add a line encouraging people to rate the plugin if they like it.
  • Change the support line to point to the FAQ before recommending they contact support.
  • Fix the link to the "How to Restore" post in the FAQ.
  • Some string changes for translators, 18 changed strings.


  • Fix possible warning on plugin activation if the sites cron option is empty.
  • Don't show the version warning in the help for Constants as that comes from the current version.


  • Re-setup the cron schedules if they get deleted somehow.
  • Delete all BackUpWordPress cron entries when the plugin is deactivated.
  • Introduce the HMBKP_SCHEDULE_TIME constant to allow control over the time schedules run.
  • Make sure the schedule times and times of previous backups are shown in local time.
  • Fix a bug that could cause the legacy backup schedule to be created on every update, not just when going from 1.x to 2.x.
  • Improve the usefulness of the wp-cron.php response code check.
  • Use the built in site_format function for human readable filesizes instead of defining our own function.


  • Revert the change to the way the plugin url and path were calculated as it caused regressions on some systems.


  • Fix issues with scheduled backups not firing in some cases.
  • Better compatibility when the WP Remote plugin is active alongside BackUpWordPress.
  • Catch and display more WP Cron errors.
  • BackUpWordPress now fails to activate on WordPress 3.3.2 and below.
  • Other minor fixes and improvements.


  • Only send backup failed emails if the backup actually failed.
  • Turn off the generic "memory limit probably hit" message as it was showing for too many people.
  • Fix a possible notice when the backup running filename is blank.
  • Include the wp_error response in the cron check.


  • Fix fatal error on PHP 5.2.


  • Ability to have multiple schedules with separate settings & excludes per schedule.
  • Ability to manage exclude rules and see exactly which files are included and excluded.
  • Fix an issue with sites with an open_basedir restriction.
  • Backups should now be much more reliable in low memory environments.
  • Lots of other minor improvements and bug fixes.


  • Updated and improved translations across the board - props @elektronikLexikon.
  • German translation - props @elektronikLexikon.
  • New Basque translation - props Unai ZC.
  • New Dutch translation - Anno De Vries.
  • New Italian translation.
  • Better support for when WordPress is installed in a sub directory - props @mattheu



  • Fix issue with backups being listed in reverse chronological order.
  • Fix issue with newest backup being deleted when you hit your max backups limit.
  • It's now possible to have backups sent to multiple email address's by entering them as a comma separated list.
  • Fix a bug which broke the ability to override the mysqldump path with HMBKP_MYSQLDUMP_PATH.
  • Use echo rather than pwd when testing shell_exec as it's supported cross platform.
  • Updated Spanish translation.
  • Fix a minor spelling mistake.
  • Speed up the manage backups page by caching the FAQ data for 24 hours.


  • Fix backup path issue with case sensitive filesystems.


  • Fix an issue with emailing backups that could cause the backup file to not be attached.
  • Fix an issue that could cause the backup to be marked as running for ever if emailing the backup FATAL error'd.
  • Never show the running backup in the list of backups.
  • Show an error backup email failed to send.
  • Fix possible notice when deleting a backup file which doesn't exist.
  • Fix possible notice on older versions of PHP which don't define E_DEPRECATED.
  • Make HMBKP_SECURE_KEY override-able.
  • BackUpWordPress should now work when ABSPATH is /.


  • Don't show warning message as they cause to much panic.
  • Move previous methods errors to warnings in fallback methods.
  • Wrap .htaccess rewrite rules in if mod_rewrite check.
  • Add link to new restore help article to FAQ.
  • Fix issue that could cause "not using latest stable version" message to show when you were in-fact using the latest version.
  • Bug fix in zip command check that could cause an incorrect zip path to be used.
  • Detect and pass MySQL port to mysqldump.


  • Don't fail archive verification for errors in previous archive methods.
  • Improved detection of the zip and mysqldump commands.
  • Fix issues when ABSPATH is /.
  • Remove reliance on SECURE_AUTH_KEY as it's often not defined.
  • Use warning() not error() for issues reported by zip, ZipArchive & PclZip.
  • Fix download zip on Windows when ABSPATH contains a trailing forward slash.
  • Send backup email after backup completes so that fatal errors in email code don't stop the backup from completing.
  • Add missing / to PCLZIP_TEMPORARY_DIR define.
  • Catch and display errors during mysqldump.


  • Track PHP errors as backup warnings not errors.
  • Only show warning message for PHP errors in BackUpWordPress files.
  • Ability to dismiss the error / warning messages.
  • Disable use of PclZip for full archive checking for now as it causes memory issues on some large sites.
  • Don't delete "number of backups" setting on update.
  • Better handling of multibyte characters in archive and database dump filenames.
  • Mark backup as running and increase callback timeout to 500 when firing backup via ajax.
  • Don't send backup email if backup failed.
  • Filter out duplicate exclude rules.


  • Fix fatal error on PHP =< 5.3


  • Fixes issue with backups dir being included in backups on some Windows Servers.
  • Consistent handling of symlinks across all archive methods (they are followed).
  • Use .htaccess rewrite cond authentication to allow for secure http downloads of backup files.
  • Track errors and warnings that happen during backup and expose them through admin.
  • Fire manual backups using ajax instead of wp-cron, HMBKP_DISABLE_MANUAL_BACKUP_CRON is no longer needed and has been removed.
  • Ability to cancel a running backup.
  • Zip files are now integrity checked after every backup.
  • More robust handling of failed / corrupt zips, backup process now fallsback through the various zip methods until one works.
  • Use mysql_query instead of the depreciated mysql_list_tables.


  • Better handling of unreadable files in ZipArchive and the backup size calculation.
  • Support for wp-cli, usage: wp backup [--files_only] [--database_only] [--path<dir>] [--root<dir>] [--zip_command_path=<path>] [--mysqldump_command_path=<path>]


  • Better detection of zip command.
  • Don't delete user settings on update / deactivate.
  • Use ZipArchive if zip is not available, still falls back to PclZip if neither zip nor ZipArchive are installed.
  • Better exclude rule parsing, fixes lots of edge cases, excludes now pass all 52 unit tests.
  • Improved the speed of the backup size calculation.


  • Re-written core backup engine should be more robust especially in edge case scenarios.
  • 48 unit tests for the core backup engine, yay for unit tests.
  • Remove some extraneous status information from the admin interface.
  • Rename Advanced Options to Settings
  • New Constant HMBKP_CAPABILITY to allow the default add_menu_page capability to be changed.
  • Suppress possible filemtime warnings in some edge cases.
  • 3.3 compatability.
  • Set proper charset of MySQL backup, props valericus.
  • Fix some inconsistencies between the estimated backup size and actual backup size when excluding files.


  • 1.4 was incorrectly marked as beta.


  • Most options can now be set on the backups page, all options can still be set by defining them as Constants.
  • Russian translation, props valericus.
  • All dates are now translatable.
  • Fixed some strings which weren't translatable.
  • New Constant HMBKP_DISABLE_MANUAL_BACKUP_CRON which enable you to disable the use of wp_cron for manual backups.
  • Manual backups now work if DISABLE_WP_CRON is defined as true.


  • Spanish translation
  • Bump PHP version check to 5.2.4
  • Fallback to PHP mysqldump if shell_exec fails for any reason.
  • Silently ignore unreadable files / folders
  • Make sure binary data is properly exported when doing a mysqldump
  • Use 303 instead of 302 when redirecting in the admin.
  • Don't set_time_limit inside a loop
  • Use WordPress 3.2 style buttons
  • Don't pass an empty password to mysqldump


  • Check for PHP version. Deactivate plugin if running on PHP version 4.


  • Re-written back up engine, no longer copies everything to a tmp folder before zipping which should improve speed and reliability.
  • Support for excluding files and folders, define HMBKP_EXCLUDE with a comma separated list of files and folders to exclude, supports wildcards *, path fragments and absolute paths.
  • Full support for moving the backups directory, if you define a new backups directory then your existing backups will be moved to it.
  • Work around issues caused by low MySQL wait_timeout setting.
  • Add FAQ to readme.txt.
  • Pull FAQ into the contextual help tab on the backups page.
  • Block activation on old versions of WordPress.
  • Stop guessing compressed backup file size, instead just show size of site uncompressed.
  • Fix bug in safe_mode detection which could cause Off to act like On.
  • Better name for the database dump file.
  • Better name for the backup files.
  • Improve styling for advanced options.
  • Show examples for all advanced options.
  • Language improvements.
  • Layout tweaks.


  • Show live backup status in the back up now button when a back up is running.
  • Show free disk space after total used by backups.
  • Several langauge changes.
  • Work around the 1 cron every 60 seconds limit.
  • Store backup status in a 2 hour transient as a last ditch attempt to work around the "stuck on backup running" issue.
  • Show a warning and disable backups when PHP is in Safe Mode, may try to work round issues and re-enable in the future.
  • Highlight defined Constants.
  • Show defaults for all Constants.
  • Show a warning if both HMBKP_FILES_ONLY and HMBKP_DATABASE_ONLY are defined at the same time.
  • Make sure options added in 1.1.4 are cleared on de-activate.
  • Support mysqldump on Windows if it's available.
  • New option to have each backup emailed to you on completion. Props @matheu for the contribution.
  • Improved windows server support.


  • Fix a rare issue where database backups could fail when using the mysqldump PHP fallback if mysql.max_links is set to 2 or less.
  • Don't suppress mysql_connect errors in the mysqldump PHP fallback.
  • One time highlight of the most recent completed backup when viewing the manage backups page after a successful backup.
  • Fix a spelling error in the shell_exec disabled message.
  • Store the BackUpWordPress version as a Constant rather than a Variable.
  • Don't (float) the BackUpWordPress version number, fixes issues with minor versions numbers being truncated.
  • Minor PHPDoc improvements.


  • Attempt to re-connect if database connection hits a timeout while a backup is running, should fix issues with the "Back Up Now" button continuing to spin even though the backup is completed.
  • When using PCLZIP as the zip fallback don't store the files with absolute paths. Should fix issues unzipping the file archives using "Compressed (zipped) Folders" on Windows XP.


  • Fix a bug that stopped HMBKP_DISABLE_AUTOMATIC_BACKUP from working.


  • Fix a possible max_execution_timeout fatal error when attempting to calculate the path to mysqldump.
  • Clear the running backup status and reset the calculated filesize on update.
  • Show a link to the manage backups page in the plugin description.
  • Other general fixes.


  • Remove the logging facility as it provided little benefit and complicated the code, your existing logs will be deleted on update.
  • Expose the various Constants that can be defined to change advanced settings.
  • Added the ability to disable the automatic backups completely define( 'HMBKP_DISABLE_AUTOMATIC_BACKUP', true );.
  • Added the ability to switch to file only or database only backups define( 'HMBKP_FILES_ONLY', true ); Or define( 'HMBKP_DATABASE_ONLY', true );.
  • Added the ability to define how many old backups should be kept define( 'HMBKP_MAX_BACKUPS', 20 );
  • Added the ability to define the time that the daily backup should run define( 'HMBKP_DAILY_SCHEDULE_TIME', '16:30' );
  • Tweaks to the backups page layout.
  • General bug fixes and improvements.


  • Don't ajax load estimated backup size if it's already been calculated.
  • Fix time in backup complete log message.
  • Don't mark backup as running until cron has been called, will fix issues with backup showing as running even if cron never fired.
  • Show number of backups saved message.
  • Add a link to the backups page to the plugin action links.


Don't throw PHP Warnings when shell_exec is disabled


Minor bug fix release.

  • Suppress filesize() warnings when calculating backup size.
  • Plugin should now work when symlinked.
  • Remove all options on deactivate, you should now be able to deactivate then activate to fix issues with settings etc. becoming corrupt.
  • Call setup_defaults for users who update from backupwordpress 0.4.5 so they get new settings.
  • Don't ajax ping running backup status quite so often.

1.0.1 & 1.0.2

Fix some silly 1.0 bugs


1.0 represents a total rewrite & rethink of the BackUpWordPress plugin with a focus on making it "Just Work". The management and development of the plugin has been taken over by Human Made Limited the chaps behind WP Remote


Version 0.4.5 and previous were developed by wpdprx

Requires: 3.7.3 or higher
Compatible up to: 3.9.1
Last Updated: 2014-5-6
Downloads: 1,109,243


4 stars
4.6 out of 5 stars


3 of 22 support threads in the last two months have been resolved.

Got something to say? Need help?



11 people say it works.
1 person says it's broken.

80,5,4 0,1,0
67,3,2 100,1,1
57,7,4 50,2,1 100,1,1 100,1,1 50,2,1 100,1,1 50,2,1 100,1,1 50,4,2
100,3,3 100,5,5 100,3,3
67,6,4 100,3,3
100,1,1 100,3,3 0,1,0
67,9,6 86,7,6 100,1,1 100,7,7 100,1,1 100,2,2 0,1,0 100,2,2 100,1,1 100,1,1 100,2,2 100,1,1 0,1,0 100,1,1 0,1,0
67,3,2 100,3,3 100,2,2 100,1,1 100,1,1 100,1,1
100,2,2 100,1,1 80,5,4 100,10,10 67,3,2 63,19,12 100,8,8
100,5,5 92,12,11 0,1,0
100,12,12 100,6,6
83,6,5 0,1,0 45,22,10 67,3,2 100,1,1 86,7,6 100,1,1 100,3,3 83,6,5
86,7,6 100,1,1 100,10,10 94,16,15 100,1,1
100,2,2 57,14,8 100,2,2
100,3,3 50,6,3
100,1,1 100,1,1
67,3,2 100,1,1 75,4,3 100,1,1 100,1,1
100,2,2 100,1,1 100,3,3 100,10,10 100,4,4