wordmove-ng
Move WordPress sites between environments with one command: files and database, in both directions, over SSH.
Install Quick start Upgrading from 5.x
wordmove-ng pushes or pulls the WordPress core, uploads, themes, plugins, mu-plugins, languages and the database between a local install and any number of remote hosts. Files travel with rsync; the database is dumped at the source, imported at the target and adapted there with wp search-replace, so URLs and paths always match the destination.
It is the maintained, independent successor of Wordmove by weLaika, continued through the kokiddp fork. The movefile.yml format, the commands and the flags are unchanged; the internals were modernised and a few unsafe behaviours removed. If you come from either project, read Upgrading from wordmove 5.x.
How it works
push ───────────────▶
local ┌────────────┐ ┌────────────┐ remote
│ wordpress │ rsync │ wordpress │
│ wp-content │ ─────────▶ │ wp-content │
│ │ ◀───────── │ │
│ database │ dump/scp │ database │
└────────────┘ └────────────┘
◀─────────────── pull
- Every remote operation uses the system
ssh,scpandrsync. Your ssh-agent,~/.ssh/config, jump hosts and modern key types all work exactly as on the command line, and nothing breaks on a new OpenSSL or Ruby release. - The source database is only ever read. Both directions dump the source, import on the target, then run
wp search-replaceon the target. A backup of the target database is taken first. - Prerequisites on both sides are probed before any backup, dump or import, so a misconfigured host fails before it can do harm.
wordmove-ng doctorperforms the same checks on demand. - Optional maintenance mode hides the database replacement from visitors.
- MariaDB and MySQL are both supported, with sandbox-header handling, collation and charset normalisation, socket and port support.
- Runs on Ruby 3.0 through 4.0.
Where to go next
| I want to… | Read |
|---|---|
| install it | Installation |
| sync my first site | Quick start |
move from wordmove 5.x |
Upgrading |
understand every movefile.yml key |
Configuration |
| know what each flag does | Usage and flags |
| know exactly what happens to my database | Database sync |
| run commands before or after a deploy | Hooks |
| schedule syncs from cron or CI | Automation and cron |
| fix a problem | Troubleshooting |
Credits
Wordmove was created and maintained for a decade by weLaika: Stefano Verna, Ju Liu, Fabrizio Monti, Alessandro Fazzi, Filippo Gangi Dino and many contributors. The workflow, the movefile format and most of the code are theirs. kokiddp kept it running on modern Ruby, OpenSSL 3 and MariaDB. wordmove-ng is maintained by tekgnosis.net under the MIT licence.