Quick start

  1. 1. Create the movefile
  2. 2. Check everything
  3. 3. Pull the site down
  4. 4. Push changes up
  5. Everyday commands

1. Create the movefile

Run init from the directory that contains wp-config.php:

cd /path/to/your/wordpress
wordmove-ng init

It writes movefile.yml, pre-filled with the local database credentials, socket or port from wp-config.php and the local URL from WP_HOME/WP_SITEURL or wp option get home. Open the file and fill in the production section (rename it as you like): the remote vhost, wordpress_path, database credentials as seen from the remote host, and the ssh block.

production:
  vhost: https://example.com
  wordpress_path: /var/www/example
  database:
    name: example
    user: example
    password: "<%= ENV['PROD_DB_PASS'] %>"
    host: localhost
  ssh:
    host: example.com
    user: deploy

The full reference is in Configuration.

2. Check everything

wordmove-ng doctor

The doctor validates the movefile, checks the local tools and database connection, then for each SSH remote tries a non interactive login and probes for rsync, gzip, mysql, mysqldump and wp. Fix what it reports before going on.

3. Pull the site down

wordmove-ng pull -e production --all

Files are mirrored into your local install, the remote database is dumped, imported locally and rewritten to your local URL and path. Your previous local database is saved as wp-content/local-backup-<timestamp>.sql.gz first.

4. Push changes up

Simulate first: -s runs rsync with --dry-run and skips the database steps after logging what would happen.

wordmove-ng push -e production -t -p -s     # themes and plugins, dry run
wordmove-ng push -e production -t -p        # for real
wordmove-ng push -e production -d           # database only

A push of the database backs up the remote database to wp-content/production-backup-<timestamp>.sql.gz locally, dumps your local database, imports it on the remote and runs wp search-replace there. Your local database is never modified.

Everyday commands

Command Effect
wordmove-ng pull -e staging -u fetch the uploads folder from staging
wordmove-ng push -e production --all --no-db mirror every folder, keep the production database
wordmove-ng push -e production --all --no-uploads everything but uploads
wordmove-ng pull -e production -d --no-adapt import the production database without rewriting URLs
wordmove-ng list show every environment and its vhost
wordmove-ng help push all flags

With a single remote environment -e can be omitted. Every flag is explained in Usage and flags.

File sync mirrors the source: files missing at the source are deleted at the destination. Anything you need to keep on one side only goes in exclude.


Copyright © 2013-2019 weLaika Soc. Coop. (Wordmove), 2026 tekgnosis.net (wordmove-ng). Distributed under the MIT license.

This site uses Just the Docs, a documentation theme for Jekyll.