Skip to content

What gets copied and what's left out

The database and file groups SiteRelay copies, the built-in skip list, Leave out rules, Mirror, and what always stays a site's own.

ReferenceFor SiteRelay 1.0.05 min read

This page covers backups, pulls and pushes. Exports and imports carry the database only.

The database

SiteRelay copies the site's WordPress tables: every table that starts with the site's table prefix (such as wp_). On a network, that means one subsite's tables. SiteRelay's own tables are never copied.

On the way, SiteRelay changes the other site's address and file path to the receiving site's, everywhere, including inside serialized data and JSON. Extra find & replace pairs run as well. Post GUIDs are left alone unless you switch on Replace GUIDs.

Tables go live in one step at the end. Until then the receiving site keeps running on its old tables.

The files

Files come from wp-content, in five groups:

Group What it is Choices (Custom)
Themes wp-content/themes All, active only, only the ones you choose, all except the ones you choose, or none
Plugins wp-content/plugins All, active only, only the ones you choose, all except the ones you choose, or none
Must-use plugins wp-content/mu-plugins All, only the ones you choose, all except the ones you choose, or none
Uploads wp-content/uploads, the media library All, only new or changed, changed since a date, or none
Other wp-content Anything else in wp-content, such as a languages or fonts folder All, only the ones you choose, all except the ones you choose, or none

WordPress itself (the core files and wp-config.php) is never copied.

Only new or changed compares uploads the way rsync does. A file with the same size and the same date is the same file. One with the same size but another date is compared by its contents (SHA-1). Everything else is copied.

Symbolic links are skipped: SiteRelay copies real files and folders only.

The built-in skip list

What a copy of the site doesn't need is left out without asking.

Everywhere (any file group), matched against every folder and file name:

Left out Why
.git, .svn, .hg Version control
node_modules Developer packages
.DS_Store, Thumbs.db Operating-system clutter
*.log Log files
ai1wm-backups, updraft, backups-dup-*, backwpup-*, wpvividbackups Other backup plugins' archives (All-in-One WP Migration, UpdraftPlus, Duplicator, BackWPup, WPvivid)

In uploads and other wp-content only. In themes and plugins these names are often real code, so they're kept there.

Left out Why
cache, *-cache, litespeed Caches, rebuilt by the plugin
logs, *-logs, wflogs Logs (Wordfence's included)
wp-staging WP Staging's backups
upgrade, upgrade-temp-backup WordPress' scratch folders for updates
iawp-geo-db.mmdb Independent Analytics' location database. The plugin downloads it again

Never copied (SiteRelay's own and the site's private machinery):

  • SiteRelay's own plugin folder, mu-plugins/relay-compat.php, and uploads/relay (exports and backups).
  • In wp-content: the relay-staging and relay-backups working folders, upgrade, upgrade-temp-backup and cache.
  • The drop-ins advanced-cache.php, object-cache.php, db.php, db-error.php, sunrise.php, maintenance.php and fatal-error-handler.php. They belong to the server they were set up on.

Names are matched without regard to case, and * stands for anything.

Leave out rules

With Custom (under More options → Leave out) or --exclude on the command line, you can add your own rules, one per line:

Rule Leaves out
*.zip Every .zip file, in any folder
uploads/2019 The 2019 uploads
uploads/2019/* Everything inside the 2019 uploads folder
big-video.mp4 Any file or folder with that name
  • A rule without a / matches any folder or file name, anywhere.
  • A rule with a / matches the path as seen from wp-content, such as uploads/2019 or plugins/hello.php, and everything inside it.

Bring something back with !. A ! rule wins over the built-in list and your other rules:

Rule Brings back
!*.log Log files
!uploads/iawp-geo-db.mmdb Independent Analytics' location database
!uploads/cache A folder named cache in uploads that turns out to hold real content

SiteRelay's own folders can't be brought back.

Mirror

Without Mirror, a copy adds and replaces: files the receiving site has and the other doesn't are left alone.

With Mirror, the receiving site is made to match. Themes, plugins and uploads it has and the other site doesn't are moved into the job's restore point, so undoing the job brings them back. For themes and plugins this happens only when all of them are copied, so choosing a few plugins never removes the rest.

Whole site turns Mirror on. Mirror and Low-disk mode can't be used together.

Low-disk mode

Normally, files arrive in a staging folder and switch over at the end, and the files they replace are kept in the restore point. That needs room for both. Low-disk mode for uploads writes uploads straight into place instead, so little extra space is needed. The catch: the uploads it replaces aren't kept, so undoing the job can't bring them back.

Into a multisite network

A network shares some things between all its subsites, so a site coming into one is handled differently:

  • Themes and plugins the network doesn't have are added. Ones it already has stay as they are.
  • Must-use plugins and other wp-content are never copied into a network.
  • Uploads go into the subsite's own uploads folder.
  • Users join the network's users: same email means same person. See Multisite.

What always stays the receiving site's own

Whatever is copied, these stay as they were on the receiving site:

  • SiteRelay's settings: site mode, access keys, saved connections, History, profiles and notifications.
  • WordPress' secret keys and salts. When they're stored in the database rather than wp-config.php, SiteRelay carries the receiving site's own into the copied tables.
  • wp-config.php and WordPress' core files.

Stuck? Troubleshooting explains every message SiteRelay shows, and what to send when you ask for help.