Linux 软件免费装
Banner图

Sitecarry Backup & Migration – Restore, Clone & Cloud Backups

开发者 dotance
更新时间 2026年9月24日 02:33
PHP版本: 7.4 及以上
WordPress版本: 7.1
版权: GPLv2 or later
版权网址: 版权信息

标签

backup restore database backup cloud backup site migration

下载

1.31.0 1.31.1 1.31.2 1.32.0

详情介绍:

Sitecarry builds a single package containing your site's files and a full database export, then lets you download it from the WordPress admin. The build runs in short, resumable slices, so it works on shared hosting where a single PHP request is capped at 30 seconds. If a request times out, the next one picks up exactly where the last one stopped. Each package comes with a standalone installer that restores it onto any server — the same file works for moving a site to new hosting, cloning live to staging, or rolling a site back. What it does Why URL rewriting is the hard part WordPress stores a lot of settings as PHP serialized data, where every string carries its own byte length. Replacing an old domain with a longer one using a plain search and replace breaks those lengths, and WordPress can then no longer read the value — which is how a migration quietly wipes widget settings and page builder layouts. Sitecarry rewrites the serialized form directly and repairs the lengths, and it also handles the JSON-escaped form (https:\/\/) that page builders such as Elementor store their content in. Security Packages contain a complete copy of your database. Sitecarry stores them in a protected folder with an unguessable filename, blocks direct web access via .htaccess and web.config, and serves downloads only through an authenticated admin request — never a public URL. Every package has its own restore passphrase, shown in the admin and kept out of the archive. The installer refuses to do anything without it, so an installer left behind on a server cannot be used by anyone else to overwrite the site. It also deletes itself and the archive when the restore finishes.

安装:

  1. Upload the plugin folder to /wp-content/plugins/.
  2. Activate it through the Plugins screen.
  3. Open Sitecarry in the admin menu and click Create Backup.

屏幕截图:

  • When backups run, how many are kept, and the weekly rehearsal that proves the newest one still restores.
  • Sending finished packages to Google Drive, Amazon S3, anything that speaks the same protocol, or FTP — each with the set-up it honestly takes, and the error you get when you miss a step.
  • Being told when a backup fails, by email or into Slack or Discord.

升级注意事项:

1.15.0 Housekeeping and a proper uninstall. Deleting the plugin now clears its settings and schedules; your backup packages are left where they are. 1.14.0 Fixes ten bugs, most of them cases where an interrupted backup could resume into a corrupt archive. Worth taking.

常见问题:

Where are packages stored?

In wp-content/uploads/sitecarry/, protected from direct web access.

What happens if I delete the plugin?

Sitecarry removes its settings and its scheduled events from the database, and stops scheduling anything. Your packages in wp-content/uploads/sitecarry/ are left exactly where they are, on purpose — deleting a plugin should never be the thing that destroys your last copy of the site. Delete that folder yourself once you are sure you no longer need what is in it.

It says to keep the tab open. Why?

Background backups need the site to be able to send an HTTP request to itself. Some hosts block that. When Sitecarry detects it cannot, it falls back to running the backup from your browser instead, which works everywhere but needs the tab left open. Ask your host to allow loopback requests if you want unattended backups.

How do I roll this site back to a package?

Press Get installer next to the package, and Download archive under More. Upload both files into this site's folder — the one that holds wp-admin — and open installer.php in a browser. You will need the package passphrase, shown beside the package, and this site's database password. Your stored packages are not touched. A restore replaces the very files WordPress is running from, so it cannot be done from inside WordPress, and a plugin has no business writing a program into your site folder to do it. That upload is yours to make.

A backup seems stuck. What do I do?

While a backup is running there is a Stop backup button under the progress bar, and it will tell you if that backup has stopped making progress. Stopping clears away the half-built package. From the command line, wp sitecarry stop does the same — useful if the admin screen is not loading. Nothing is lost by stopping: a partial package cannot be restored from anyway.

Can I run backups from the command line?

Yes. wp sitecarry backup builds one and waits for it, with no execution limit and nothing to keep open. wp sitecarry verify --all checks every package and exits non-zero if any fails, so it works in a monitoring script. wp sitecarry status prints how the site is protected.

Does verifying prove the backup will restore?

No, and nothing short of restoring it does. Verifying proves the archive is the one that was written, still opens, and holds the files a restore starts from. That catches truncated uploads, disks that filled mid-write and silent corruption. It cannot tell you the database inside will import cleanly on a different server. That last gap is exactly what rehearsing closes — see the next two questions.

What is the difference between verifying and rehearsing?

Verifying reads the archive: it confirms the file is the one that was written, that it still opens, and that the two files a restore cannot start without are inside. It takes seconds and it cannot tell you the database will import. Rehearsing imports it. The whole database export is run into tables of the plugin's own, the row count is compared against what was recorded at backup time, and the tables are then dropped. Nothing on your site is written to at any point. That is the difference between "this file is intact" and "this backup works".

Can it rehearse on its own?

Yes. Turn on Rehearse weekly in Settings and Sitecarry proves the newest full backup once a week, on Sunday, three hours after your backup hour. You hear from it only when it fails — the same failures-only rule backups use, for the same reason: a weekly all-clear stops being read within a month and takes the important one with it. The hour is not a setting on purpose. It follows the backup hour so the two cannot be pointed at each other, and a rehearsal stands aside if it finds a backup running. What gets rehearsed is the newest package that stands on its own. With incremental backups on, the newest package is usually a difference, so it walks back to the most recent full one rather than skipping that week.

Is rehearsing safe to run on a live site?

Yes, and it is built to be. Every table it creates carries a prefix of its own, every statement is checked to be acting on one of those tables before it runs, and the tables are dropped whether the rehearsal passes, fails or is interrupted. Anything a crash leaves behind is swept away within a day. It does use processor time and, briefly, database space roughly the size of your database. It will not start while a backup is running.

What does rehearsing actually check?

Six things, in order, and it stops at the first that fails:

  1. The archive is the one that was written, and still opens.
  2. Every file in it decompresses to the size it claims.
  3. The whole database export imports, into tables of the plugin's own.
  4. The number of rows matches what was recorded when the backup was taken — which catches a dump that imported without error and is simply short.
  5. Serialized data survives a domain change.
  6. What imported is a WordPress that would work: it knows its own address, it has roles, and at least one user holds a role that still exists.
The fifth is the one worth explaining. Widget settings, theme options and every page-builder layout are stored as serialized data, where each string records its own byte length. Move to a longer address without repairing those lengths and WordPress can no longer read the value: the site loads, looks right, and the layouts are gone. So a rehearsal rewrites the imported rows to a deliberately longer address and checks WordPress can still read every one of them back. The sixth catches the other silent one. WordPress stores roles in an option named after the table prefix, and each user's capabilities under a meta key named after it too. Restore under a different prefix and rename only the tables, and you get a site that loads perfectly and locks everybody out. A rehearsal moves the prefix in the data as a real restore would, then checks a user is still left holding a role that exists. To be plain about what step six is: it reads what WordPress reads on its way up. It does not execute WordPress against the scratch tables. Booting a second WordPress would mean either a second PHP process — proc_open and exec are disabled on most shared hosting — or writing a web-reachable bootstrap into your document root on a schedule, which is a worse thing to own than the gap it closes. Nothing is written to your site at any point. The rows are tested in memory, and the scratch tables are dropped when it finishes.

Does a passing rehearsal guarantee the restore will work?

It guarantees more than anything else short of doing it, and less than everything. It proves the package restores onto this server — this PHP, this MySQL. The server you would actually use in a disaster is a different one, and nothing but a real restore proves that. What it does catch is the whole class of failures that make a backup useless without announcing itself: a truncated dump, a corrupt entry in the middle of the archive, a database export that is short of rows. That last gap is what rehearsing closes — see below.

The server is gone. How do I restore?

Upload installer.php into the target folder on the new server, open it, and enter the package passphrase. If it cannot find the archives it will offer to download them from your storage — enter a read-only key for that bucket when it asks. Keep a copy of installer.php somewhere other than the site it protects; it is small, and without it you would have only the archives.

What do I need to restore an incremental backup?

Every archive from the last full backup up to the one you are restoring. The Sitecarry screen tells you how many that is, and the installer refuses to start while any of them is missing rather than restoring half a site. If that sounds fragile, leave incremental off — every package is then complete on its own.

How do I move a site to a different server?

Download both the Archive and the Installer from the Sitecarry screen, upload them into the target folder on the other server, create an empty database there, then open installer.php in a browser and enter the package's restore passphrase.

Does it work on SQLite?

No, and it tells you rather than pretending. The database export is MySQL, and the restore installer connects through mysqli, so a package taken on SQLite could not be restored. On such a site — WordPress Playground, or the SQLite database integration plugin — the Backups screen says so and the button is disabled.

Is wp-config.php inside the package?

No, and deliberately. It holds your database password and the eight authentication keys and salts that sign every login cookie on the site — secrets that should never leave the server, least of all inside an archive that gets uploaded to cloud storage. A restore does not need it. Onto an existing WordPress install the installer keeps that site's own wp-config.php and rewrites the database settings in it; into an empty folder it writes a fresh one from what you type in, with newly generated keys. On a multisite, add the multisite constants back by hand after restoring into an empty folder.

Why does the restore not run inside WordPress?

Because it replaces the very files WordPress is running from. Anything doing that from inside WordPress would be pulling the floor out from under itself partway through. The installer is a standalone program that never loads WordPress.

Can it restore into a database that already has a WordPress install?

Only if it uses the same table prefix, and it will replace those tables. Changing the table prefix during a restore is not supported yet — use an empty database.

How large a site can it handle?

Comfortably into the tens of gigabytes. Sitecarry writes its own archive format rather than using PHP's zip extension, appending each file to the end and never rewriting what is already there — so the work grows with the size of the site instead of with the square of it. ZIP64 is used automatically, so neither the archive nor any file in it is capped at 4GB. You still need free disk space for the package, and enough for the database export while it is being written.

Can I make backups faster?

Three things matter, in order. Compression is the big one, and Sitecarry already avoids most of the cost: images, video, audio, fonts and archives are stored as they are, whatever level you pick, because compressing them again is pure waste. If the server is slow and disk is cheap, set compression to None. Second, exclude what you do not need. A folder of raw video in uploads will dominate everything else. Third, let it run in the background rather than from a browser tab, or use wp sitecarry backup, which has no execution limit at all.

Where can I see what is inside before installing?

Screenshots, what is inside, the release history and answers to setup questions are on the Sitecarry page at dotance.com.

更新日志:

1.32.0 1.31.2 1.31.1 1.31.0 1.30.0 1.29.0 1.28.0 1.27.0 1.26.0 The screens, redesigned. Same controls, same words, laid out like what they are: evidence. 1.25.0 1.24.0 The rest of the interface pass. 1.23.0 1.22.0 The restore installer's buttons did nothing. Fixed, and now checked on every build. Anyone who downloaded an installer from version 1.16.0 onwards should download it again — the archives themselves were always fine. 1.21.1 1.21.0 1.20.0 Uploading to Google Drive and to Amazon S3 both worked again. One line broke them both, and it was not the services. 1.19.5 1.19.4 1.19.3 1.19.2 The first rehearsal run on a real site found a restore bug, which is the whole reason the feature exists. 1.19.1 Three things that looked wired up and were not. All found by driving the plugin in a browser rather than by reading it. 1.19.0 Rehearsing no longer depends on somebody remembering to press the button. 1.18.0 Rehearsing now finishes the job: proving the imported database is a WordPress that would actually work, not merely one that imported. 1.17.0 Rehearsing now tests the thing that actually breaks migrations, and tells you when it fails. 1.16.0 This release adds the thing a backup plugin should have had from the start: a way to prove a package restores, without restoring it over anything. 1.15.0 1.14.0 This release fixes ten bugs found in a full review, most of them cases where a backup could be silently corrupt or a restore could fail — the worst kind, because you only find out when you need the backup. 1.13.2 1.13.1 1.13.0 1.12.1 1.12.0 1.11.0 1.10.0 1.9.0 1.8.0 1.7.0 1.6.0 1.5.0 1.4.0 1.3.0 1.2.0 1.1.0 1.0.0