For me, domain names are impulse purchases, and after developing a new site for a while, the original domain I picked sometimes just doesn't have the same appeal anymore. Migrating content between sites then becomes an issue. Previously, I recommended the use of SSH to migrate a locally developed WordPress site, with a simple search and replace on the database. While this works in most cases and has never failed me yet, it's a little riskier if you're moving directories (such as mydomain.com/blog to myotherdomain.com) or if you have plugins which use serialized data (where all of a plugins settings are stored in one encoded database entry rather than a single row for each setting).

So today, I'm going to try out 3 plugins which can semi-automate this entire process for you. I'll be migrating data from an old domain of mine, to a new site, both running on a virtual private server.

1. Duplicator (Free)

Duplicator promises a three-step migration process. After installing the plugin, you'll find a quick link to the manage page from the plugins list.

migrating wordpress

It's probably best to start to checking your servers compatibility with the plugin. Here's what I ended up with.

migrating wordpress content

Though, I'm fairly certain the Open Base dir restriction isn't relevant due to the version of PHP I run on this server, so perhaps they need to update. Nevertheless, I will go ahead and create my first package. Packages are the contents of your database and files, all wrapped up in one. Click the create button in the top right, or if your package set is currently blank there should be a link in the center of the screen for you. My test site is fairly small, with only 30 posts and little else - this gave me a pre-zip size of 50mb.

After clicking create, it'll go to work. You can view the log if you're curious, but mine was completed within seconds. You're then presented with two buttons for file downloads, and instructed to grab both the "installer" and the "package".

migrating wordpress content

There are some advanced options too under the settings panel; you can email when the package is complete, if it's taking too long. You can exclude directories or certain file extensions; and pre-populate the installer fields (though this is not required). I kept all the defaults.

Upload both to your new site, via FTP. Duplicator aims to replicate the entire setup for you, from databases to core WordPress files, which is clever - I was expecting to have to set up a basic functional WordPress, but apparently not.

On with the testing then, I uploaded the package and installer.php file. Now the fun begins. Launch the installer.php - on the new domain now - from your browser, and you see something like this:

migrating wordpress content

The only details you'll need to add are the DB access details; while Duplicator can create the individual tables, you'll still need a mysql user and database set up for it to use. Check the database connection, accept the disclaimer, and proceed with the install.

wordpress migration plugin

You'll even be given the option of re-activating plugins, which is pretty nifty.

wordpress migration plugin

Finally, there's a list of steps you need to click manually. These involve re-writing the permalinks file, deleting the installer, and finally testing the site.

I'm happy to report that everything was 100% working and fine; the site was exactly as it had been before, but with a new domain and title. Fantastic!

Total time to migrate: less than 10 minutes (though this will vary upon the size of the site in question).

http://www.youtube.com/watch?feature=player_embedded&v=nyHNV6D2w2c#!

2. WordPress Move (Free)

Once installed, WordPress Move adds a Migration Assistant link under the Tools sub-menu. It present 3 options:

  • Change domain (no files will be moved)
  • <Migrate
  • Restore

Before using migrate, you will need to configure the plugin from the settings sub-menu  so I proceeded to do that. this involves adding FTP access details for the new site. The only complicated bit here is the relative path; in my case this was:

httpdocs/wp-content/plugins/wordpress-move/backup

You also need to have WordPress and the wpmove plugin installed at the other end. This was quite a disappointment considering Duplicator could operate without that, and it added a good 30 minutes onto the process. Sigh.

wordpress migration plugin

With a fresh WordPress installed, and the WordPress Move plugin also added, I headed back to begin the transfer process from the old site. Type the ftp password, the new domain name, and hit start migration.

…Error. I try changing the port number, remember that I usually connect using secure FTP (typically port 22) rather than the unsecure regular FTP protocol. Even though both should work.

Again, connection error. At this point, I'm calling it quits on this particular plugin. Maybe your luck would be better, but honestly why would you even try with this when the Duplicator plugin works so well?

3. Backup Buddy ($50)

The process of backing up and restoring a site is much the same as migrating, so it's no surprise that a premium and well respected backup plugin such as this has added "magic migrate" functionality to its already extensive feature list. The only setup needed here is to first create a restoration password from the settings pages.

Before migration can occur, an initial backup must be taken. Choose the "complete backup" type, and begin. Then head over to the restore/migrate area, and select automated restore/migration. Hover over the latest backup and an option to "migrate this backup" should appear.

You'll need to setup a new target for the backup to be sent to. I added the FTP details for the new site and confirmed they were working, but unfortunately it ran into errors along the way when it was trying to access newdomain.com/httpdocs (this was the subdirectory for public HTML files that I had to set, but it shouldn't be in the URL); I eventually figured out how to get this working by creating a new FTP user which defaulted to the HTTPDOCS directory.

At this point, the process is basically identical to Duplicator; you can choose the manual mode which will actually give you a similar "importbuddy.php" and backup file to download then upload to the new site over FTP, or if you managed to make the FTP work it can all be done from within the old WordPress install. During the process, you enter database information, and everything else is done for you. As a final step, the install files are deleted and some common problems and their solutions are presented.

migrating wordpress

Essentially then, the migration portion of Backup Buddy is almost identical to Duplicator, just with FTP upload step removed, if you can correctly configure the access details. Of course, Backup Buddy's real power lies in the backups, but it's difficult to recommend it purely as a migration tool, especially considering the premium price tag.

Total time to migrate: about 30 minutes, though this was particular to my FTP accounts setup.

Don't Forget to 301 the Old Domain

It's almost certain that you'll want to redirect all traffic and search engine "love" to the new domain - use a 301 redirect for this. Simply replace the current .htaccess file with the following, replacing newdomain.com.

Options +FollowSymLinks
    

RewriteEngine on

RewriteRule (.*) http://newdomain.com/$1 [R=301,L]

If you're using webmaster tools to inform of the site re-location, you'll need to add an exception for the Google confirmation file. Replace the googleXXXX.html in the following code with your particular verification URL.

Options +FollowSymLinks
    

RewriteEngine on

RewriteCond %{REQUEST_URI} !^/googleXXXX.html/?$

RewriteRule (.*) http://newdomain.com/$1 [R=301,L]

That's it, site migrated, traffic redirected and no search engine love lost.

Verdict: Duplicator Wins!

I had expected the premium tool to be the superior product in all aspects, but in this case I actually want to give the prize to Duplicator - and it's 100% free. It lacks the fully automated aspect of BackupBuddy - assuming you get the settings right, that is - but anyone running self-hosted WordPress should be able to download and upload a few files to FTP, so I'm not sure that's to such a great detriment to Duplicator. The fact that it presents clear advice and instructions at every step is also really appreciated; I was never in doubt as to do what to do next with Duplicator. Stay well away from WordPress Move at all costs though - it's just far too fiddly.

Do you know of any better solutions? Let me know in the comments, and in the meantime be sure to check out our Best WordPress Plugins page, to which Duplicator will surely be added soon.