WP-CLI Command – Push/Pull Subcommands
wp migratedb <push|pull> <url> <secret-key>
[--find=<strings>]
[--replace=<strings>]
[--regex-find=<strings>]
[--regex-replace=<strings>]
[--case-sensitive-find=<strings>]
[--case-sensitive-replace=<strings>]
[--include-tables=<tables>]
[--exclude-database]
[--exclude-post-types=<post-types>]
[--skip-replace-guids]
[--exclude-spam]
[--preserve-active-plugins]
[--include-transients]
[--backup=<prefix|selected|table_one,table_two,table_etc>]
[--media=<all|since-date>]
[--media-date=<yyyy-mm-dd>]
[--media-subsites=<blog-id|subsite-url>]
[--subsite=<blog-id|subsite-url>]
[--subsite-source=<blog-id|subsite-url>]
[--subsite-destination=<blog-id|subsite-url>]
[--theme-files=<all|theme-one,theme-two,theme-etc>]
[--plugin-files=<all|plugin-one,plugin-two,plugin-etc>]
[--exclude-theme-plugin-files=<string>]
Allows you to run a push or pull migration.
Options
<url>
The URL of the remote site. Should include the URL encoded basic
authentication credentials (if required). e.g.
http://user:[email protected]
Must include the WordPress directory if WordPress is stored in a subdirectory.
e.g. http://example.com/wp
<secret-key>
The remote site's secret key.
[--find=<strings>]
A comma separated list of strings to find when performing a string find
and replace across the database.
Table names should be quoted as needed, i.e. when using a comma in the
find/replace string.
The --replace=<strings> argument should be used in conjunction to specify
the replace values for the strings found using this argument. The number
of strings specified in this argument should match the number passed into
--replace=<strings> argument.
If omitted, a set of 2 find and replace pairs will be performed by default:
1. Strings containing URLs referencing the source site will be replace
by the destination URL.
2. Strings containing root file paths referencing the source site will
be replaced by the destination root file path.
[--replace=<strings>]
A comma separated list of replace value strings to implement when
performing a string find & replace across the database.
Should be used in conjunction with the --find=<strings> argument, see it's
documentation for further explanation of the find & replace functionality.
[--regex-find=<strings>]
A comma separated list of regex pattern strings to match against when performing
a regex find and replace across the database.
[--regex-replace=<strings>]
A comma separated list of replace value strings to implement when
performing a regex find & replace across the database.
Should be used in conjunction with the --regex-find=<strings> argument.
A replace string may contain references of the form \n or $n, with the latter
form being the preferred one. Every such reference will be replaced by the text
captured by the n'th parenthesized pattern used in the --regex-find pattern.
[--case-sensitive-find=<strings>]
A comma separated list of strings to find when performing a case-sensitive string
find and replace across the database.
[--case-sensitive-replace=<strings>]
A comma separated list of replace value strings to implement when
performing a case-sensitive string find & replace across the database.
[--include-tables=<tables>]
The comma separated list of tables to migrate. Excluding this parameter
will migrate all tables in your database that begin with your
installation's table prefix, e.g. wp_.
[--exclude-database]
Will not perform any table/database migration.
[--exclude-post-types=<post-types>]
A comma separated list of post types to exclude. Excluding this parameter
will migrate all post types.
[--skip-replace-guids]
Do not perform a find & replace on the guid column in the wp_posts table.
[--exclude-spam]
Exclude spam comments.
[--preserve-active-plugins]
Preserves the active_plugins option (which plugins are
activated/deactivated).
[--include-transients]
Include transients (temporary cached data).
[--backup=<prefix|selected|table_one,table_two,table_etc>]
Perform a backup of the destination site's database tables before
replacing it.
Accepted values:
* prefix - Backup only tables that begin with your installation's
table prefix (e.g. wp_)
* selected - Backup only tables selected for migration
(as in --include-tables)
* A comma separated list of the tables to backup.
[--media=<all|since-date>]
Perform a migration of the media files. Requires the Media Files Addon.
Accepted values:
* all - push or pull all media
* since-date - compares and migrates media files added since a certain date, specified by the --media-date option
[--media-date=<yyyy-mm-dd>]
Only used when migrating media files with the --media-files=since-date value
Accepted values:
* yyyy-mm-dd - date from which to migrate media files. Only files added since this date will be migrated.
[--media-subsites=<blog-id|subsite-url>]
Only transfer media files for selected subsites
Only applies to multisite installs
Separate multiple subsites with commas
Use Blog ID or URL of *<local|remote>* subsites
[--subsite=<blog-id|subsite-url>]
Push the given subsite to the remote single site install.
Requires the Multisite Tools addon.
[--subsite-source=<blog-id|subsite-url>]
Push the given subsite to another subsite, used in conjunction with subsite-destination.
Requires the Multisite Tools addon.
[--subsite-destination=<blog-id|subsite-url>]
Push the given subsite to another subsite, used in conjunction with subsite-source.
Requires the Multisite Tools addon.
[--theme-files=<all|theme-one,theme-two,theme-etc>]
Perform a migration of the theme files. Requires the Theme & Plugin files addon.
Accepted values:
* all - Downloads all themes from the remote site.
* A comma separated list of themes to migrate. See `wp theme list` for a list
of theme slugs.
Requires the Theme and Plugin Files addon.
[--plugin-files=<all|plugin-one,plugin-two,plugin-etc>]
Perform a migration of the plugin files. Requires the Theme & Plugin files addon.
Accepted values:
* all - Downloads all plugins from the remote site.
* A comma separated list of plugins to migrate. See `wp plugin list` for a list
of theme slugs.
Requires the Theme and Plugin Files addon.
[--exclude-theme-plugin-files=<string>]
A comma-separated list of theme or plugin files and folders that should be excluded
from the migration.
Requires the Theme and Plugin Files addon.
Examples
Pull from example.com to example.dev with a standard find and replace; don’t replace GUIDs; backup all local tables that begin with install’s table prefix; pull down all remote media:
wp migratedb pull http://example.com [secret key] \
--find=//example.com,/path/to/example.com
--replace=//example.dev,/path/to/example.dev
--skip-replace-guids
--backup=prefix
--media=all
Push to example.com from example.dev with a standard find and replace, additionally replace all occurrences of “the best examples on the internet” with “the best examples in the world”; only push wp_posts and wp_postmeta; backup wp_posts, wp_postmeta, and custom_table; push up all media since the 1st of January 2021:
wp migratedb push http://example.com [secret key] \
--find=//example.dev,/path/to/example.dev,'the best examples on the internet'
--replace=//example.com,/path/to/example.com,'the best examples on the world'
--backup=wp_posts,wp_postmeta,custom_table
--media=since-date
--media-date=2021-01-01
Pull from example.com to example.dev with a standard find and replace; only pull the wp_posts and wp_postmeta tables, include all media files:
wp migratedb pull http://example.com [secret key] \
--find=//example.com,/path/to/example.com
--replace=//example.dev,/path/to/example.dev
--include-tables=wp_posts,wp_postmeta
--media=all
Pull from example.com to example.dev with a standard find and replace; include all media files created since the 1st of January 2021:
wp migratedb pull http://example.com [secret key] \
--find=//example.com,/path/to/example.com
--replace=//example.dev,/path/to/example.dev
--media=since-date
--media-date=2021-01-01
Pull from example.com to example.dev with a standard find and replace; include all media files and all theme and plugin files:
wp migratedb pull http://example.com [secret key] \
--find=//example.com,/path/to/example.com
--replace=//example.dev,/path/to/example.dev
--media=all
--theme-files=all
--plugin-files=all