LTT Site Porter documentation

Version 1.3.1 · All documentation · Product page

LTT Site Porter makes a full copy of a WordPress site, files and database, as a package of two files: an archive (.spa) and a standalone installer.php. With them you can restore the site, move it to another server, domain or folder, or clone it to staging. All long jobs run in short, resumable steps, so site size and hosting time limits do not matter.

Requirements

ItemRequirement
WordPress5.6 or newer
PHP for the plugin7.4 or newer
PHP for installer.php7.0 or newer
PHP extensions, requiredzlib, mysqli
PHP extensions, optionalftp (FTP storage), ssh2 (SFTP), zip (Duplicator .zip), openssl, curl
DatabaseMySQL or MariaDB
AccessAdministrator; on multisite a super admin

Install, update, remove

  1. Plugins → Add Plugin → Upload Plugin, choose the plugin zip, Install Now, Activate Plugin.
  2. A new menu item LTT Site Porter appears. The Packages tab offers “Create your first package”.

Activation creates a protected storage folder wp-content/sptr-backups-<random> and a background check every 5 minutes. On a multisite network, use Network Activate; the menu is in Network Admin.

Update: upload the new zip and click Replace current with uploaded. Packages, schedules, storages and settings are kept.

Remove: deactivating deletes nothing. Deleting removes the plugin’s table and settings, but the storage folder with your archives and all cloud copies stay. Delete the folder by FTP if you no longer need it.

Create a package

  1. LTT Site Porter → Packages → Create package.
  2. Check the name and the contents: Files and Database are both ticked by default.
  3. Set an installer password. Optional, but recommended for every move.
  4. Optional: folders, extensions or file sizes to skip, database tables, and storages to send a copy to.
  5. Click Build package. You can leave the page; the work continues in the background.
  6. When you see “The package is ready”, download the archive and installer.php.

Cache folders and other backup plugins’ folders are skipped by default. Before updating a plugin, a quick package with only Database ticked is enough to roll back.

The package list

  • Columns: Package, Created, Size, Status, Copies, Download.
  • Badges: scheduled, database only, files only, Duplicator, site #N.
  • Copies: “Local” plus one chip per storage. Green = uploaded, red = failed (hover for the error), grey = waiting.
  • Row actions: Progress, Cancel, Log, Restore, Upload to storage, Delete, Delete local, Delete everywhere.

Move a site to a new host or domain

  1. Build a package with an installer password and download both files.
  2. On the new hosting, create an empty database and a user with all privileges. Note the host, name, user and password.
  3. Upload both files to the empty site folder (usually public_html) by FTP or the file manager, in binary mode.
  4. Open https://new-site/installer.php and log in with the installer password.
Installer stepWhat happens
1. OverviewPackage details and system checks: PHP, extensions, writable folder, archive, free space, existing WordPress. Confirm and click Extract archive
2. ExtractFiles are unpacked in steps; every 2 MB block is checked
3. SettingsDatabase details with Test connection, table prefix, old and new addresses and paths, additional replacements, optional new administrator
4. InstallDatabase import, address replacement, new wp-config.php and .htaccess
5. DoneCounters, a check that the home page answers, Log in and Open site, Delete installer files
  • Addresses are replaced everywhere, including serialized and JSON data saved by themes and page builders.
  • Delete the installer files right after the install. The dashboard keeps reminding you while they are there.
  • On the new site all schedules are paused, so a copy never writes into the live site’s storages. Click Resume schedules if the new site is now the main one.
  • Users come from the backup. If you do not know a password, run the installer again and fill in “Administrator (optional)”.

Restore on the same site

  1. Packages → hover the package → Restore → confirm.
  2. A temporary installer opens with the database details of this site.
  3. Go through Overview, Extract, Settings, Install, Done. Addresses stay the same.
  4. Log in again: users and sessions come from the backup.

Restore needs the archive on this server. If it is only in a storage, download it and upload it on the Import tab, or put it in the storage folder by FTP and click Add to list. A restore overwrites files and tables but does not delete files added after the backup.

Import an archive

LTT Site Porter → Import replaces this site completely with the contents of an archive, keeping this site’s address.

  1. Drop a .spa archive, or a Duplicator .zip or .daf, into the box.
  2. It uploads in small pieces, so the server upload limit does not matter. An interrupted upload continues when you choose the same file again.
  3. Check the card (package, made by, source site, WordPress, size) and click Install over this site.

For very large archives, upload the file by FTP into the storage folder shown on the page, then click Add to packages and use Restore.

Duplicator backups

Site Porter installs backups made by Duplicator and Duplicator Pro (.zip and .daf) without Duplicator itself.

  • New server: Import → “Move a Duplicator backup to another server” → Download installer.php. Put it next to the Duplicator archive in an empty folder, create an empty database and open installer.php. The Duplicator password works too.
  • Existing site: upload the archive on the Import tab and click Install over this site.
  • The installer deactivates the old Duplicator plugin on the new site and checks the home page at the end.
  • Encrypted Duplicator Pro 4 archives are not supported. Schedules and storages create only Site Porter packages.

Cloud storages

LTT Site Porter → Storages → Add a storage. After saving, Test connection uploads and deletes a test file. Passwords and keys are stored encrypted. Data goes straight from your server to the storage.

StorageNotes
FTP / FTPSHost, port 21, folder (created if missing), optional explicit FTPS, passive mode on by default
SFTPNeeds the PHP ssh2 extension; password or key files
S3-compatibleAmazon S3, Backblaze B2, Cloudflare R2, Wasabi, MinIO and others: endpoint, region, bucket, keys, folder, optional path-style URLs
DropboxYour own Dropbox app (App folder), App key and secret, then a one-time authorization code
Google DriveYour own Google Cloud OAuth client with the redirect URI shown in the form; backups go to “Site Porter Backups”

Scheduled backups

  1. Add a storage and test it.
  2. Schedules → Add schedule: frequency (every hour, daily, weekly, monthly), time, contents, storages in “Send to”.
  3. Set Keep copies: on this server (default 2) and in each storage (default 7). Older copies made by this schedule are removed.
  4. Save schedule. Use Run now to test it.

Schedules late at night? WordPress runs scheduled tasks only when someone visits the site. On a quiet site add a server cron job every 5 minutes: wget -q -O - https://your-site/wp-cron.php?doing_wp_cron >/dev/null 2>&1.

Notifications and settings

Notifications (Settings): email when a backup fails (default), after every backup, or never. The message includes sizes, storage results and the last 25 log lines.

Performance settingDefaultWhen to change
Work per request20 secondsLower it (8–10 s) if your host returns 502 or 504 errors
Compression3 (0–9)Higher is smaller but slower; images and video are never recompressed
Rows per database query1000Lower on very slow databases
Max INSERT size1024 KBMust be below max_allowed_packet of the destination server
Background processingOnNeeded for schedules; WP-Cron is the fallback

The System box shows the storage folder, PHP limits, the database server, extensions and the WP-Cron state.

Multisite

  • Network-activate the plugin; only super admins see it, in Network Admin.
  • Back up the whole network, or export one site as a regular WordPress site.
  • When moving a network, the installer lets you set a new address for each site. A subdomain network needs a domain name and wildcard DNS or a record for every subdomain.
  • A single site exported from a network cannot be imported back into a network.

Troubleshooting

SymptomWhat to do
Build stops at the same percent, 502 or 504 errorsSettings → Work per request: 8–10 seconds
Package stays “Building” after closing the tabWait up to 5 minutes for the background check; add a server cron job; open the Log
“Database server closed the connection” during installLower Max INSERT size and build the package again
“Could not find the archive (.spa) next to the installer.”Put the archive in the same folder as installer.php; upload in binary mode; compare sizes
“Archive is damaged”Upload the archive again
“Wrong password.”Use the installer password set when the package was created
Pages give 404 after a moveSettings → Permalinks → Save Changes; on nginx configure try_files
Old domain still visibleClear the caching plugin and CDN; use Additional replacements for anything else
HTTP 500 after installA plugin or theme does not fit the server PHP. Check the PHP error log and rename that plugin’s folder
Storage test failsCheck host, port and keys; FTP: try passive mode; SFTP needs ssh2; S3: check endpoint, region and path-style
Schedules do not run on a copied siteSchedules → Resume schedules
Import upload stopsChoose the same file again; the upload continues

FAQ

What is the difference between the archive and installer.php?

The archive holds the files and the database. installer.php is a small standalone program that unpacks it, imports the database and replaces addresses. You need both to move a site.

Is there a size limit?

No fixed limit. Every step is resumable. For very large archives, upload by FTP instead of through the browser.

My host has a 30-second limit. Will it work?

Yes. A step is always shorter than the PHP time limit minus 8 seconds. If you still see 502 or 504, lower Work per request.

Do I have to keep the browser tab open?

No. The work continues in the background.

Where are backups stored on my server?

In wp-content/sptr-backups-<random>, closed to web access. The exact path is on Settings → System and on the Import tab.

Can I move a site into a subfolder?

Yes. Upload the files into that folder and open example.com/folder/installer.php; the new address and path are detected.

Can I change the table prefix during a move?

Yes, on the Settings step of the installer.

Why are my schedules paused on the new site?

Schedules pause automatically on a migrated copy, so a staging site does not write into the live site’s storages. Click Resume schedules if it is now the main site.

Is it safe to leave installer.php on the server?

No. Delete the installer files right after the move, with the button on the last step or in the dashboard notice.

Does any data go to the author or a third party?

No. Uploads go directly to your own storages.

Still need help?

Write to info@lesst3.com or use the Support page. Include your WordPress and PHP versions and what you see on the screen; a screenshot helps.