=== SiteShift Migration ===
Contributors: utshojoy
Tags: migration, backup, export, import, clone
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Move a WordPress site to a new host or domain with one archive. No import size limit.

== Description ==

SiteShift Migration packs your database and everything in `wp-content` into a single `.siteshift` file, and restores it on any other WordPress site — rewriting URLs and server paths for you.

**Features**

* **One-click export** of the database, media, plugins and themes. Optionally leave out media, plugins, themes, inactive plugins or themes, must-use plugins, spam comments, post revisions, transients, or any folder you name.
* **No import size limit.** The browser uploads the archive in small chunks, so `upload_max_filesize` and `post_max_size` do not limit you, and an interrupted upload resumes where it stopped.
* **Automatic find & replace** of the old site URL and server paths — including inside serialized PHP data, JSON-escaped URLs used by page builders, and URL-encoded values. Add your own replacements too.
* **Safe database restore.** Tables are imported under a temporary prefix and swapped in with one atomic `RENAME TABLE` at the end. If anything fails before that, your live database is untouched.
* **Different table prefix?** Role and capability keys are rewritten automatically.
* **Backups** tab to download, restore or delete archives. Very large files can also be copied by FTP into `wp-content/siteshift-backups/` and restored from there.
* **Resumable.** Work runs in short steps, so it copes with low `max_execution_time` limits and retries automatically after a timeout.
* **WP-CLI:** `wp siteshift export`, `wp siteshift import <file>`, `wp siteshift list`.
* Visitors see a short "maintenance" page while an import is running.

**Privacy**

SiteShift Migration does not contact any external server, does not track you, and does not collect any data. Archives stay on your own server until you download them.

== Installation ==

1. Install from **Plugins → Add New**, or upload the plugin zip under **Plugins → Add New → Upload Plugin**.
2. Activate it and open **SiteShift** in the admin menu.
3. On the old site, click **Export to file** and download the archive.
4. On the new site, install SiteShift Migration, open the **Import** tab and drop the archive on it.
5. After importing a database, log in with a username and password from the **imported** site.

== Frequently Asked Questions ==

= Is there a file size limit? =

No. Uploads are chunked, so PHP's upload limits do not apply. For very large archives you can also copy the file by FTP or SFTP into `wp-content/siteshift-backups/` and restore it from the Backups tab.

= Why do I have to log in again after importing? =

The import replaces the users table with the one from the archive, so you log in with an account from the site you exported.

= Does it move WordPress core or wp-config.php? =

No. Only the database and the contents of `wp-content` are moved, so the destination keeps its own WordPress install and database credentials.

= Does it support multisite? =

Not yet. Single sites only.

= Can it import archives from other migration plugins? =

No. It imports `.siteshift` archives created by SiteShift Migration.

= Are my backups protected? =

The storage folder is blocked for Apache, LiteSpeed and IIS, and every archive name has a random suffix. On nginx you can also add a `deny all` rule for `/wp-content/siteshift-backups/`. Archives contain your whole database, so delete the ones you no longer need.

= Can I change where archives are stored? =

Yes. Define `SITESHIFT_STORAGE_DIR` in `wp-config.php`, or use the `siteshift_backups_dir` filter. The `siteshift_step_seconds` filter controls how long each step runs.

== Screenshots ==

1. Export your whole site in one click, with options to leave out media, plugins, themes, spam, revisions or any folder.
2. Exports run in short resumable steps, so slow hosts and short PHP time limits are not a problem.
3. Download the finished archive straight from the dialog.
4. Drop an archive to import it. Add your own find & replace pairs on top of the automatic URL and path rewrite.
5. Uploads are sent in small chunks, so there is no size limit and an interrupted upload resumes.
6. Check the source site before anything is overwritten.
7. Old URLs and paths are rewritten everywhere, including serialized and page-builder data.
8. Download, restore or delete your backups.

== Changelog ==

= 1.0.0 =
* First release.

== Upgrade Notice ==

= 1.0.0 =
First release.
