Skip to main content
  1. All Posts/

wp-env-sync

Tools Open Source Sync WordPress

WP Env Sync


Sync the content of a production WordPress site with its lower environments.

  • Syncs database (all wp_ tables)
  • Syncs uploads directory
  • No limit to the number of lower environments
  • Supports both single installs & multisites

Requirements

  • Node >=8
  • SSH access to all environments

Install

npm install -g @masonite/wp-env-sync

Usage

Execute sync job:

wp-env-sync --url=https://mysite.com/projects.json --prod=prd --project=wp_site_a

Perform a dry run for the sync job:

wp-env-sync --url=https://mysite.com/projects.json --prod=prd --project=wp_site_a --dry-run

Endpoint Structure

[
    {
        "name": "WordPress Site A",
        "slug": "wp_site_a",
        "type": "wordpress",
        "env": [
            {
                "name": "prd",
                "url": "site-a.com",
                "ssh": "siteaprd@siteaprd.ssh.wpengine.net",
                "public_path": "/home/wpe-user/sites/siteaprd",
                "private_path": "/home/wpe-user/sites/siteaprd/_wpeprivate"
            },
            {
                "name": "tst",
                "url": "staging.site-a.com",
                "ssh": "siteatst@siteatst.ssh.wpengine.net",
                "public_path": "/home/wpe-user/sites/siteatst",
                "private_path": "/home/wpe-user/sites/siteatst/_wpeprivate",
                "search_replace": [
                    [
                        "my_production_api_key",
                        "my_staging_api_key"
                    ],
                    [
                        "my_production_api_secret",
                        "my_staging_api_secret"
                    ]
                ]
            },
            {
                "name": "dev",
                "url": "siteadev.wpengine.com",
                "ssh": "siteadev@siteadev.ssh.wpengine.net",
                "public_path": "/home/wpe-user/sites/siteadev",
                "private_path": "/home/wpe-user/sites/siteadev/_wpeprivate",
                "search_replace": [
                    [
                        "my_production_api_key",
                        "my_development_api_key"
                    ],
                    [
                        "my_production_api_secret",
                        "my_development_api_secret"
                    ]
                ]
            }
        ]
    },
    {
        "name": "WordPress Site B",
        "slug": "wp_site_b",
        "type": "wordpress-multisite",
        "env": [
            {
                "name": "prd",
                "url": "site-b.com",
                "ssh": "sitebprd@sitebprd.ssh.wpengine.net",
                "public_path": "/home/wpe-user/sites/sitebprd",
                "private_path": "/home/wpe-user/sites/sitebprd/_wpeprivate"
            },
            {
                "name": "tst",
                "url": "staging.site-b.com",
                "ssh": "sitebtst@sitebtst.ssh.wpengine.net",
                "public_path": "/home/wpe-user/sites/sitebtst",
                "private_path": "/home/wpe-user/sites/sitebtst/_wpeprivate",
                "options": [
                    [
                        "blogdescription",
                        "This value was programmatically updated only on staging.site-b.com"
                    ],
                    [
                        "test_option",
                        "This value was programmatically updated on specific sites",
                        [
                            "hello.staging.site-b.com",
                            "world.staging.site-b.com"
                        ]
                    ]
                ],
                "site_options": [
                    [
                        "site_name",
                        "TST Sites"
                    ]
                ]
            },
            {
                "name": "dev",
                "url": "sitebdev.wpengine.com",
                "ssh": "sitebdev@sitebdev.ssh.wpengine.net",
                "public_path": "/home/wpe-user/sites/sitebdev",
                "private_path": "/home/wpe-user/sites/sitebdev/_wpeprivate"
            }
        ]
    }
]

License

MIT © Masonite