How to migrate a WordPress blog from one droplet to another existing droplet?

I have two droplets, D1 & D2. D1 has one wordpress blog hosted on it while D2 has 3 blogs hosted on it. Both D1 & D2 have LEMP stack. I want to move the blog hosted on D1 to D2. Could someone please tell me how to go about it? I am pretty new to Digital Ocean and Linux.

Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Accepted Answer

Hi @anshuldixit

Since I don’t know how much you know or tools you have available, I’ll try to list most.

First, you need to stop using (meaning updating/editing D1’s WP). Then I would highly recommend that you take a snapshot of both D1 and D2 via the DigitalOcean control panel, so you can revert completely in case of total failure.

Then let’s take a backup of the WordPress database of D1. If you have phpMyAdmin, then use that, otherwise I would recommend that you use

Login to D1 via SSH. I’m guessing you have setup both servers with password and not keys, if you are using keys, then let me know. Now let’s copy all files from D1 to D2, but since I don’t know your exact web-root paths, you will need to adjust those. I’m expecting that D1’s web-root is /var/www/html:

scp -pr /var/www/html root@THE-IP-OF-D2:/var/www/DOMAIN-NAME-OF-D1-WEBSITE
# Example
# scp -pr /var/www/html root@

It’s going to take a little time to copy the data depending on how many media files you’ve uploaded to D1’s WordPress.

We will copy the Nginx configuration as well:

scp -p /etc/nginx/sites-available/NAME-OF-CONFIGURATION root@THE-IP-OF-D2:/etc/nginx/sites-available/DOMAIN-NAME-OF-D1-WEBSITE
# Example
# scp -p /etc/nginx/sites-available/default root@

Log out of D1. We’re done with that server.

The rest is done only on D2.

Now let’s upload the D1 database to D2. Again, install Adminer to D2 unless you already have phpMyAdmin. If the D1 database name is already in use on D2, then you might need to modify the database name before uploading it. I need more information from you to assist here.

And now let’s update the /var/www/ file, so the database configuration matches the login on D2 - and in case you have renamed the database, then change that too. Let’s also make sure it’s owned by www-data, which I guess is your Nginx+PHP user:

chown -R www-data:www-data /var/www/

Adjust the Nginx configuration /etc/nginx/sites-available/ so it uses the root of /var/www/ And then activate the configuration:

ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/

Test the configuration - if it returns “OK”, then restart Nginx too:

sudo service nginx configtest
sudo service nginx restart

Now we should be ready to change the DNS to point the D1-domain to the IP of D2. There’s way to test this before changing the DNS, by modifying your computers hosts file. If you want to be totally sure, we can do that before changing the DNS.

Site Moderator
Site Moderator badge
March 3, 2022

Hello there,

We do have an article that covers the process, although it is with deprecated status, however, you can check it here:

You can use the WP All in One plugin or Duplicator to migrate all of your WordPress websites.

If you have to move some of the data manually you can do that via ssh using scp or rsync. Another option is to use an FTP client like FileZilla

Hope that this helps!

This comment has been deleted

    Try DigitalOcean for free

    Click below to sign up and get $200 of credit to try our products over 60 days!

    Sign up

    card icon
    Get our biweekly newsletter

    Sign up for Infrastructure as a Newsletter.

    Sign up
    card icon
    Hollie's Hub for Good

    Working on improving health and education, reducing inequality, and spurring economic growth? We’d like to help.

    Learn more
    card icon
    Become a contributor

    You get paid; we donate to tech nonprofits.

    Learn more
    Welcome to the developer cloud

    DigitalOcean makes it simple to launch in the cloud and scale up as you grow – whether you’re running one virtual machine or ten thousand.

    Learn more ->
    DigitalOcean Cloud Control Panel
    Get started for free

    Enter your email to get $200 in credit for your first 60 days with DigitalOcean.

    New accounts only. By submitting your email you agree to our Privacy Policy.

    © 2023 DigitalOcean, LLC.