I do a lot of WordPress site upgrades and migrations, so I thought a brief article would be helpful to share my experience.
I had previously used BackupBuddy for this, but not any more since I don’t like the fact that it backs up the WordPress system files (my opinion and that of many others, is that the WordPress system files are the responsibility of your operating system). There is surely an option to disable this, but I am not willing to do any research there since UpdraftPlus is an amazing backup solution, the free version does automated remote backups to AWS/S3 (!), and because it allows you to restore right from your dashboard as well.
So what is the best free plugin to restore or migrate a WordPress site, either on the same or different domain?
- The free version of UpdraftPlus won’t allow you to change domain names (so, you can move your site to another host just fine, but it must be on the same domain name)
- The free version of All-in-One WP Migration is super-easy, however the free version only allows you to restore files smaller than your host’s configured upload_max_filesize and post_max_size. I have a very good host (GreenGeeks) and it only allows 40M. Most WordPress sites will exceed 40M, so we have to use a workaround with All-in-One (see below)
Most hosts have a php configurator option in their cPanels which allows you to increase your default php options, but there will still be a maximum defined by your host (may be 40M but it is typically a lot less).
How to copy or migrate a WordPress site with UpdraftPlus
The free UpdraftPlus works with a site of any size, but it won’t do domain name changes or allow you to make a copy of your site, for instance to copy your site to http://test.yourdomain.com.
The process is quite simple:
- Backup your site on your old host.
- Copy the 4 generated files (database backup, theme backup, plugin backup, Others backup) to your computer
- Change name servers for your domain and create a new WordPress site on your new host
- Install UpdraftPlus on your new site
- Upload the 4 backup files to your new site’s Updraft folder (it will be in wp-contents directory). You can use FTP for this or else the cPanel file manager, depending on the size of your backup files. You can also zip the 4 files to your local computer, upload to the Updraft folder, and unzip them with cPanel > File Manager
- Restore from your new site’s dashboard
Note: for very large sites, the process is iffy. You will probably need to restore your wp-content manually (either with FTP or using the cPanel > File Manager > Compress file command on your old host), and then use UpdraftPlus to restore only the database backup file. Generally, however, the process is very fast and easy and works like a charm.
How to copy a WordPress site with All In One WP Migration (if your site is under 40M or so)
The upsides of this method are
- Unlike UpdraftPlus, this method allows you to easily create a copy of your site, for development or testing (i.e. copy http://yoursite.com to a sub-domain at http://test1.yoursite.com).
- You don’t need cPanel access — PROVIDED that your backup fit under your hosts’ configured upload_max_filesize (which is unlikely), There is however a workaround here described below
The process is simple (this is actually the easiest migration scenario):
- Backup your first site with All-in-One, creating a .wpress file
- Create a new WordPress installation under different domain (or sub-domain)
- Restore your new site with All-in-One by uploading your .wpress backup file
All In One WP Migration workaround (if your site is more than 40M or so)
This works beautifully and is particularly useful for copying a site to a sub-domain under same hosting.
Update August/2019: There is an even easier method which is to use an All In One WP Migration plugin that has been cracked to remove the upload limitation. I have tested this successfully on sites of 1GB. You can get it, and many other great plugins as well, as part of our paid GPL software bundle.
Anyway here is the procedure that you can use on most sites even with the regular free version of All-In-One:
1. Make a database-only backup of your first site. This is done with All-In-One > Export site, expand the “Advanced Optons” dialogue and “check” everything except “do not export database”.
2, Copy over manually (either with FTP or cPanel > File Manager > Compress) your wp-content directory of your first site, to the wp-content directory of your second site
3. Restore from the database backup
If you are copying a site (as opposed to migrating to same-domain and new host), and your database backup exceeds 40M or so (All-in-One does not compress the files, so this is very possible), you will need to do everything manually (via phpMyAdmin) or else try Duplicator Plugin (which also works well), or the migration service provided by JetPack / VaultPress. If you are doing everything manually via phpMyAdmin, see the end of this article for the sql commands you need to update your database’s site name and url to the new values
This can get problematic, depending on your host and backup size, so of course we are happy to help!