| 开发者 | backupyoursite |
|---|---|
| 更新时间 | 2026年10月4日 16:23 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
mysqldump, no shell access needed.wp-config.php is never included in an archive that is uploaded to a cloud destination,
so your WordPress authentication keys, salts and database credentials stay on your own server.
See "External Services" and the FAQ below for exactly what is sent and when.
What it does not do
mysqldump-capable host: small business sites, agencies managing client sites on
budget hosting, and anyone planning to migrate a WordPress site and wanting a verified,
restorable copy of it first.
wp-content/plugins/backupyoursite and activate it.In wp-content/uploads/backupyoursite/archives/. Each backup gets its own folder with a
random name, and the folder is protected by an index.php stub, an .htaccess rule and a
web.config rule. The plugin also tests, over HTTP, whether those rules actually work on
your server, and warns you loudly if they do not.
Open BackupYourSite → Restore, pick the backup to restore from, choose files, database, or both, and confirm. The plugin takes a snapshot of the current site first, then restores in small steps and reports progress as it works.
Take a backup on the old site, download or transfer the archive, install BackupYourSite on the new site, and restore it there. The database dump and file archive are both verified before they count as a usable backup, so a migration starts from a backup you know is intact.
WordPress's built-in scheduler only runs when someone visits the site, so it may not. The Settings screen shows a cron line you can paste into your hosting control panel to fix that.
No. See "What it does not do" above. Download the archive and restore it through your host.
No. Everything the plugin does — scheduled backups, incremental backups, verification, retention, restore — works with no account and with no connection to us. An account only adds the optional offsite cloud destination. Until you connect one, the plugin makes no request to any external service at all.
Not in any backup that leaves your server. As soon as a backup run has an off-server destination selected, the plugin leaves these files out of the archive it builds:
wp-config.phpwp-config-*.php variant your host or staging setup uses (except the core
wp-config-sample.php, which holds only placeholders)wp-salt.php and wp-salts.php.envwp-config.php holds your WordPress authentication keys and salts, which
sign this site's login cookies and nonces, plus your database credentials — and none of that
should be sitting on somebody else's storage. One archive is built per run and sent to every
destination you selected, so the exclusion applies to the whole run as soon as any destination
is off-server. A backup run with only "This server" selected still includes these files,
because nothing leaves your server.
Nothing a restore needs is lost. Restoring happens inside a working WordPress that already has
its own wp-config.php, which the plugin never overwrites. A site being rebuilt from nothing
gets a fresh wp-config.php with fresh salts from the WordPress installer, which is the safer
outcome anyway — reusing the salts of a site you have just lost would keep every old session
signable.
Your backup archives, which contain your files (minus the configuration files listed above) and your whole database. The full list is in the "External Services" section above. No telemetry or usage statistics are ever sent.
Per table, yes. Across the whole database, no — the dump runs across many requests, so rows written between two tables being dumped are captured at different moments. This is a real limitation of any backup that runs inside PHP without shell access.
Yes — that is what it is built for. The backup runs in small steps instead of one long request, so a short PHP time limit or low memory limit slows it down rather than breaking it, and a killed step is simply resumed on the next one.
Not yet.
wp-config.php is no longer included in a backup archive that leaves your server.
It holds your WordPress authentication keys and salts and your database credentials, and
uploading it put those on storage you do not control. wp-config-*.php variants,
wp-salt.php, wp-salts.php and .env are excluded in the same way. Backups that stay on
your own server are unchanged. See the FAQ for why nothing a restore needs is lost.bysbackup — its options, database
tables, scheduled task, hooks and admin page addresses. Your settings, schedule, backup
history, stored backups and cloud connection are carried over automatically on the first
load after the update; there is nothing to reconnect and nothing to set up again..htaccess — nginx, and Apache with
AllowOverride None — rewriting those files could never have worked, so the plugin used
to print the warning and leave the archives sitting at a URL that answered 200 until
someone read it, edited wp-config.php over SFTP, or opened a support ticket. It now works
through the remedies itself and re-tests after each one: it makes the archives readable
only by your own account (decisive wherever the web server is a different user from PHP,
which is the usual layout on exactly those hosts), and failing that it moves your backups
out of the website folder altogether, where no web address can reach them..htaccess, web.config, index.php) were only written when absent,
so a file that existed but was empty or half-written — a truncating "cleanup" plugin, an
interrupted write, a host migration that copied names but not contents — passed the
check while denying nothing. The folder was then open, and because the file existed it
was never repaired: the "your backups are publicly downloadable" warning fired forever
and told the user to contact their host about something the plugin could fix itself.
Protection is now verified by content, not by existence, and repaired automatically on
every backup run. A partial write is deleted rather than left in place..htaccess (usual on nginx), versus protection
files the plugin could not write. Both now point at the BYSBACKUP_BACKUP_DIR constant, which
moves backups outside the website entirely.fwrite() return values were unchecked at four
chunked-copy sites (split-file reassembly and zip-entry extraction during restore, and
the staged-file-list writer). A disk-full or short write mid-copy could silently produce
a truncated file that the restore then treated as successful. All four now check the
return value and fail the restore loudly (with a clear "disk full or write error"
message) instead of continuing with a corrupt result.// phpcs:ignore comments and a further ~30 category-only /
unreasoned ones (// phpcs:ignore WordPress.DB, WordPress.Security.NonceVerification,
Generic.CodeAnalysis.EmptyStatement) with specific sniff names and reviewed
justifications, or removed them where nothing was actually being suppressed. A bare
ignore silences every sniff on that line, so these lines were never actually examined by
the previous Plugin Check pass; each was independently re-verified with the ignore
stripped. No other real issue surfaced besides the fwrite bug above.