| 开发者 | srjdev |
|---|---|
| 更新时间 | 2026年9月5日 05:05 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
wp-content files. During restore, RestorePilot automatically detects the source URL from the backup manifest and replaces it with the current site URL using serialized-safe replacement — no manual search-and-replace needed.
Why RestorePilot
Most backup plugins are tested by how well backups work. Restores get tested less, and that is the moment you actually need one to work.
wp restorepilot backup — create a full backup.wp restorepilot backup --db-only — database-only backup.wp restorepilot health — check the newest backup..htaccess and index.php.restorepilot-backup-migration folder to /wp-content/plugins/, or upload the zip directly via Plugins → Add New Plugin → Upload Plugin.Yes. RestorePilot stores the source site URL in the backup manifest and replaces it with the current site URL during restore — automatically.
No. Auto-detect is on by default. Manual URL fields are available in Advanced restore settings for edge cases.
Yes. URL replacement is applied after unserializing values where possible, then the values are serialized again. Incomplete PHP classes are safely skipped.
Under the WordPress uploads directory in a protected restorepilot-backup-migration folder. The folder is excluded from future RestorePilot backups.
RestorePilot excludes the backup archives created by other plugins (UpdraftPlus, Duplicator, BackupBuddy, WP Staging, etc.) to avoid including huge backup zips inside your backup. The backup plugins themselves (their code inside wp-content/plugins/) are included normally.
Deleting the plugin removes all RestorePilot backups, logs, temporary download files, background job data, backup locks, and scheduled events.
Two options: (1) RestorePilot automatically splits large uploads into chunks if you upload a single zip larger than the server limit. (2) Upload the zip into this site's WordPress uploads directory via FTP/SFTP and use Advanced restore settings → Server backup path during restore.
Many hosts refuse to create a file beyond a fixed size — the write fails with "File too large" no matter how much free disk space there is. RestorePilot therefore writes a backup as a set of volumes of up to 1 GB each: your-backup.zip, your-backup-v002.zip, and so on. A small site produces a single file and looks exactly as before.
Keep the whole set together. To restore, place every volume in the same folder — RestorePilot reads them as one backup, and refuses to start if any volume is missing rather than restoring part of your site. If your host has a lower file size limit, a developer can reduce the volume size with the restorepilot_backup_volume_bytes filter.
You never need to handle the volumes yourself: "Download Full Backup" always gives you a single file, even when the backup behind it is stored as several volumes — RestorePilot reassembles them into one download automatically. The individual volumes are still available under "Download volumes individually" if you ever need to retry just one piece.
Yes. A background backup or restore runs in short chunks rather than one long process, so a host execution-time limit, a proxy or CDN timeout, or anything else that cuts the process short cannot lose progress — the next chunk simply continues from exactly where the last one stopped, including partway through a single large database table during a restore. On a large site this can mean several chunks before the job finishes, which is expected and does not mean anything went wrong. A scheduled (cron) daily backup is unaffected and still runs as a single process.
Yes. Click Health Check next to any backup. RestorePilot verifies the zip structure, manifest, database export, and file paths.
The free version keeps the newest 2 backups total. Manual backups and daily automatic backups share the same limit; older backups are removed automatically.
Yes. Use wp restorepilot backup for a full backup, wp restorepilot backup --db-only for database only, and wp restorepilot health to check the newest backup.
RestorePilot stops immediately, removes maintenance mode, and writes the full error to the Logs tab. A pre-restore rollback point may be available, but you should review the logs and verify the site before retrying.
wp-content/uploads, protected by an .htaccess file — which Apache honours and nginx ignores completely. On nginx, which is what most managed WordPress hosting runs, a backup could be downloaded by anyone who knew or guessed its address; the only thing standing in the way was the filename. A backup contains your whole database, including every user account and password hash. Backups are now kept in a directory beside your WordPress installation, which your site has no web address for, and existing backups are moved there automatically the next time you open the plugin. Downloading through the plugin is unchanged and has always required you to be logged in as an administrator..htaccess protected them. It checks by placing a file in the backup folder, requesting it over the web, and reporting what came back.includes/ directory, which the plugin loads eighteen files from. Anyone following them got a fatal error instead of a working plugin. Installing through WordPress was never affected.admin_ followed by six random characters and delete any you did not ask for.restorepilot_backup_volume_bytes filter..zip file in wp-content), which could have omitted legitimate content while still reporting success.home option could each be left in a broken state; both are now handled correctly.%-containing values passed through $wpdb->prepare(), which could prevent this plugin's own leftover lock and job cleanup from finding what it needed to remove.$wpdb->prepare()'s %i placeholder rather than manual escaping, which raises the minimum required WordPress version to 6.2.https:\/\/) was missed during URL replacement after migration.rp_tmp_ and rp_old_ tables left by an interrupted restore were not cleaned up before the next restore run.CREATE TABLE statements were not validated, allowing a malformed backup to inject arbitrary SQL.addFile() threw an exception.wp_enqueue_style / wp_enqueue_script instead of being inlined in the page output.plugins/updraftplus, plugins/duplicator, and similar plugin code folders are included correctly.old.com) that could corrupt email addresses and sibling domain names. Replacement now only matches full scheme-prefixed URLs (https://, http://, //).add_directory_to_zip used str_replace($dir, $path) which could strip the directory name multiple times. Replaced with substr.force_release_backup_locks checked stale status using the lock start time instead of the job's last-updated time, which could release locks on long-running but active backups.cli_init hook.enforce_backup_retention() was called during restore when no new backup had been created.backup- and backup_ folder prefix rules in the skip list could exclude legitimate plugins and themes named with those prefixes..gz extension in the skip list excluded pre-compressed asset files. Now only .sql.gz and .tar.gz are excluded.should_skip_file() now pre-compiles lookup tables once per PHP process, reducing string comparisons by ~60% on large file sets._get_cron_array() with the public wp_clear_scheduled_hook() API (safe since WordPress 5.1).