How to Migrate a Big Website to a New Domain, Subdomain or Another Hosting for Free for Testing (the Easiest Way)

Share the knowledge...Share on Facebook
Tweet about this on Twitter
Share on LinkedIn

migrate big websites for free - title

I’d like to show you how to copy or migrate bigger WordPress sites (more than 500 MB and very likely more than several GB). This method is easy and free. It’s great for creating testing copies of your big websites. This method in its core includes using All-in-One WP Migration plugin (a free version) and manually copying media files (‘uploads‘ folder).

Also in this article I compare my other articles on similar topics. And so, you can choose the tutorial that suits you better.


Why I’ve created this tutorial and what you’ll learn

Creating copies of your big website for testing or migrating your big website can be a real issue. Especially if you want to do it for free. The problem is in size of your website that most plugins (even paid ones) can not handle.

I’d like to show you the way how you can copy (clone, or migrate) even a big website to a new domain or subdomain for free and as easy as possible.

Yes, Even BIG sites. For free. And easily. And even if you use a budget shared hosting. (By the way, you’re welcome to check out my recommended shared hosts.)

Also, this method has no SEO risks. In other words, you can avoid any risks of getting duplicate content (in case you will want to keep both original and cloned websites).

Sometimes easy tricks can save huge amount of your time and money.

And moreover, combination of some easy tricks can have even a bigger effect.

This tutorial contains such tricks.

Although this method can work as a website migration technique in many cases, the main purpose of this tutorial is to demonstrate creating a testing copy of a big website. The website copy becomes available on a separate domain or subdomain.

Why don’t I feature this article as a tutorial how to migrate (or clone) large WordPress websites to a new domain for free? Well, you can use this tutorial for this purpose. In many cases it will work fine.

But in some cases specific plugins or applications may not be copied flawlessly out of the box this way. Custom files and folders also are not migrated. This is so because sometimes it’s impossible to migrate a whole site fully automatically. More on it see below in the Limitations chapter.

So, in short, summarizing the points why you may find this tutorial useful:

  • Clone and migration plugins don’t work well in most cases with big websites (from a couple of hundred megabytes and more) especially on a standard shared hosting. This quite a limitation.
  • Even if you site is less than 500 MB, your shared hosting may be too weak to handle this job anyway. But the method I demonstrate you in this article will help you get it done easily.
  • Copying a website manually to a new URL may be too daunting or just too complicated to non-technical users.

In short, what you will learn from this tutorial:

  • How to create a testing copy for free of your big website which can be more than 500 MB or even more than 2 GB in size. A free version of All-in-One WP Migration plugin is used for this (yes, even for sites more than 500 MB).
  • How to migrate such a big site for free to another domain or subdomain. (It may work in mane cases, but in some cases although you may need to do additional manual actions to complete the process.)
  • How to hide the content on the new domain or subdomain from search engines. (The most reliable ways: setting password on the whole WP installation on cPanel level; Access restriction by IP.)

This is the easiest free method of copying/cloning/migrating WordPress websites that I know so far.

By the way, I use the method described in this tutorial to create a copy of a website to test speed performance optimization. You can check you my articles on website performance optimization here.

A disclosure notice: There are some affiliate links on this page for the products which I mention in this post (incremental website backup service by CodeGuard and several hosts. In other words, I get paid if you click on the links and make a purchase. All such links open in new window/tab; no software/program will be installed to your computer. (This is a standard notice required by affiliate programs terms.) Please note that I mention these products not as an advertisement, but as my recommendation.


Comparing with other my articles about cloning sites for testing and staging

I’ve already written an article on a similar topic (“How to create a staging area for testing plugins etc using WP Staging plugin”). However, its use is limited since the staging area can be accessed only from the administrator account.

On the contrary, the tutorial in this blog post explains how to create an independent copy of your site. It can be useful if you want to test caching plugins or something that should be tested only from outside (i.e. not from the administrator or a specific user account).

I’ve got also another similar tutorial that features WP Clone plugin. It also allows to create an independent copy of your site. But this plugin fails on 10-20% of websites (according to the plugin’s author). Also WP Clone is much more sensitive to bigger websites (more than 200-500 MB) and may not work with them on a shared hosting.

In other words, if you have a website more than 100-200 MB then this new tutorial featuring All-in-One WP Migration plugin is much more preferable and reliable way to clone your website. And this tutorial explain how to do it with a free version of the plugin even if your site is more than 500 MB in size.

My articles on similar topics overview:


Limitations of All-in-One WP Migration plugin

Here are the most important limitations that you need to consider when using a free version of All-in-One WP Migration plugin.


500 MB only with free version

A free version of the plugin allows to migrate (copy, clone) only websites which take up no more than 500 MB in the backup. If you export your website and find out that its backup’s size is more than that, then you can’t use a free version of the plugin to import the backup.

Update from December 2018: You need a small additional plugin developed by the same guys (All-in-one WP Migration’s developers) to increase the limit to 512 MB. Otherwise the backup’s size limit can be less. You can get this free plugin here.

In this case, in order to be able to use a free version of the plugin, I recommend excluding media files from the backup when exporting it. The plugin allows doing this.

And then you can copy the media files (which are in the uploads folder) manually using FTP or simply cPanel File Manager.

In this tutorial I also demonstrate how media files can be manually copied to your new website (see this section).

Thanks to this ‘exclude’ option you can use a free version of the plugin to process even large websites (more than 2 GB). The upper size of the website you can process depends on how many media files (images) you’ve got on your website. The only size restriction for a free version of the plugin is that you need to have a backup less than 500 MB.

When you export a backup, the plugin you will let you know how much space the backup takes.

By the way, you can also exclude all themes, plugins, database, spam comments, post revisions and some other options. It allows to cut the size of the backup to speed up the copy (clone) process.


Custom files or folders are not processed

Like many other backup plugins All-in-One WP Migration plugin does not process custom files and folders. It means that the plugin can export and import your WordPress installation with all the plugins, themes, images. But it can’t export or import any files or folders that you add to your server even inside your WordPress installation folder.

For example, the following items will not be handled by the plugin:

  • HTML (or PHP) pages that do not belong to your WordPress installation;
  • Web applications that are not part of your WP installation;
  • Backup files that you store within your website;
  • Different files that you added manually inside your WP installation folder or somewhere on your hosting (e.g. the files which you’ve uploaded to verify your website with third-party services).

After you use All-in-One WP Migration plugin to clone (copy, migrate) your website, you need to copy these custom applications, files and folders additionally. Using an FTP client like FileZilla is a good idea for that.


Custom backup format

All-in-One WP Migration plugin uses its own backup file format. It means that you can’t use the backups without this plugin.

This custom backup file format allows the plugin work with large backups even on weak shared hosts.

It’s a superb feature because many other website backup and cloning plugins simply can’t work on medium and bigger websites because of the issues connected with limited resources even on great shared hosting.


The tutorial: how to copy (clone, migrate) a website to a new (sub)domain

There are the following steps in this process:

  1. Backup your original website. This has always useful to get a fresh copy of your website before making any changes like installing new plugins or manipulating your WordPress installation.
  2. Install a fresh WordPress on your (sub)domain where you want to have a copy of your original website.
  3. Install a All-in-One WP Migration plugin on your original website.
  4. Export a backup of your original website using this plugin. When creating the backup specify in the plugin’s setting that you want to replace your old domain name with the new (sub)domain name. Also, if your website is more than 500 MB in size, then exclude media files from the backup. You will add the media files to your new site later.
  5. Install a All-in-One WP Migration plugin on your (sub)domain.
  6. Import the backup on on your (sub)domain using the plugin. Then save permalinks structure twice.
  7. Discourage search engines from indexing your target website to avoid duplicate content.
  8. If you excluded media files from the backup, then add the media files (‘uploads’ folder) to your new site using file backup in cPanel File Manager or using FTP.
  9. If you want to keep both original and new websites, then make sure you disallow access to one of your sites to search engines to avoid duplicate content. The most reliable ways are to restrict access by IP and to set the password on the whole installation folder. You need this to avoid duplicating content.
  10. Optionally: Delete the backup file from your original WordPress installation on your hosting.

That’s it!

And here’s the video tutorial how to do it:

Below you can see the text-and-image version of this tutorial.


Step 1. Backup your website before making any changes

It’s a good piece of advice whenever you are going to do some changes on your website.
You may want to back up your whole hosting account creating a full cPanel backup (if you are on a shared hosting, such backup can be restored by your host). Also you can create partial cPanel backups of your files and databases separately (you will be able to restore them by yourself if you need it). I have tutorials about cPanel backups here.

By the way, I use a hassle-free, very reliable and super convenient backup solution CodeGuard (you may find my comparison review here).

So, I consider that you have your backups and you are safe. Now let’s move on.


Step 2. Preparing the (sub)domain: install WordPress

I assume you already have added a subdomain or registered a new domain.

Also you need to install WordPress on it.


Step 3. Install All-in-One WP Migration plugin on your original website

It’s dead simple. You just install and activate All-in-One WP Migration plugin the usual way. The plugin is ready to use.

Installing All-in-One WP Migration plugin

Installing All-in-One WP Migration plugin

All-in-One WP Migration plugin is different from many other WordPress backup plugins because it can overcome low server resources environment. In other words it can work perfectly even on really budget shared hosting.


Step 4. Export a backup of your original website using the plugin

You can create and export a backup easily using All-in-One WP Migration plugin. Just go to “Export” tab under the plugin title in your WordPress dashboard.


Handling even bigger websites

A free version of All-in-One WP Migration plugin can export a backup of a websites upto 500 MB. So, if your site is more than that, then when exporting a backup exclude media files.

The media files (images) usually take up the most space on your website. And excluding them from your backup will reduce its size dramatically. After that it’s very likely that a backup of your website will be smaller than 500 MB. It means that you’ll be able to use a free version of the backup.

To exclude media files from a backup, simply select the option “Do not export media library (files)”.

All-in-One WP Migration plugin settings

All-in-One WP Migration plugin settings


Replacing URL

When exporting a backup for migrating (copying, cloning) your website to a new domain or subdomain you need to specify two URL entries. The first URL is your current (sub)domain where your website is located at this moment. And the other URL is the new new (sub)domain where you want to migrate (copy, clone) your website.

It’s needed for correct replacing the internal URLs within a generated backup.

Replacing URLs in All-in-One WP Migration plugin (Export tab)

Replacing URLs in All-in-One WP Migration plugin (Export tab)

And finally click export backup (e.g. to file):

All-in-One WP Migration plugin: Export backup

All-in-One WP Migration plugin: Export backup

The exported backup will be saved (e.g. on your local drive).


Step 5. Install All-in-One WP Migration plugin on your target (sub)domain

This is as simple as it sounds. On Step 2 you already installed WordPress on your target domain or subdomain. Now just install the plugin on this target website like you did it on Step 3 on your original website.


Step 6. Import the backup to your target (sub)domain

You can do it very easily. All-in-one WP Migration plugin has a very neat user interface. So just go to the “Import” tab, specify import option (e.g. from file) and select the backup file to import.

All-in-One WP Migration plugin: Import backup

All-in-One WP Migration plugin: Import backup

After the backup import competes, you’ll see a message:

All-in-One WP Migration plugin: Import backup completed

All-in-One WP Migration plugin: Import backup completed

And then, as the plugin user interface suggests, go to your Permalinks Settings and save it twice (simply click save button twice). Saving twice is required because of inner particularities of WordPress after restoring a backup.

Note that after the backup was restored, you need to log in to your new WordPress website with the user name and password as in your original website.

Save Permalinks Settings twice after backup import

Save Permalinks Settings twice after backup import


Step 7. Discourage search engines from indexing your target site

This is super easy and quick to do. Just go to your target website’s WordPress dashboard / Settings / Reading. Select “Discourage search engines from indexing this site” and save “Save changes” button.

Discourage search engines from indexing your WordPress site

Discourage search engines from indexing your WordPress site

Although this setting does not guarantee 100% that search engines will disregard your site, this is recommended to do at this point. As you’ll see further in this tutorial (after you copy media files to your target site), you can restrict access to your target website with password or by IP to guarantee 100% protection from duplicate content issue.


Step 8. Add excluded media files to your target site

if on Step 4 you excluded media library when exporting a backup, then here’s how you can add the files to your target website on the new (sub)domain.

Basically, you need to copy the ‘uploads’ folder to your target site. This folder contains images and other files you uploaded to your original website.

After you imported a backup on your target website you already have uploads folder there. The folder may already contain some subfolders and files which belong to different plugins.

You just need to compare which subfolders are missing in the uploads folder on your target site and take (copy) them from your original site. It’s very easy. You can do it using an FTP client or simply cPanel File Manager (a default tool included on all hosts using cPanel).

Using cPanel File Manager on shared hosting for manipulating large files has a big caveat though. Shared hosts may limit the maximum size of the uploaded file within several dozens of megabytes. That’s why using FTP is usually the way you will need to copy the files.

Before copying uploads folder or its part, have a look at the two uploads folders (on the original website and on the target website) to compare them.

For this purpose you can use File Manager in cPanel:

File Manager in cPanel

File Manager in cPanel

In my example, the /wp-content/uploads/ folders in my original and target websites look like this:

'Uploads' folder on the source site

Uploads folder on the source site

'Uploads' folder on the target site

Uploads folder on the target site

Images for posts and pages are usually stored inside the year-based folders. In most cases, these folders is what you need to copy.

And media files for plugins and other media files are stored in other subfolders inside the uploads folder. You can also copy them, if you find out that on your target site some media or specifically uploaded files for your plugins are missing.

So, in my example I need to copy three folders: 2015, 2016 and 2017. It’s very easy to do using an FTP client (e.g. FileZilla) by copying the folders/files from the original site to my local drive and then from the local drive to the target site.

In order to use an FTP client you need to have FTP access to your hosting server. When you sign up with a hosting you get the FTP credentials (server address, port number, user name and password). Contact your host if you don’t know this information or can’t access your site files using FTP.

If you have never used FTP before, you may be a bit uncomfortable of starting using it as if this tool were something for technical people. This is not. This is a very convenient and easy-to-use tool. The only possible barrier for you is installing a new software (free) and spending a couple of minutes getting used to its user interface.

Advanced tip: If you want a more professional approach to handling/copying the missing or altered files in your uploads folder on your target site, you can use a folder and file comparison tools. You may want using it to determine what files are exactly missing in your target site’s uploads folder. Or find out the differences in specific files in the uploads folders on your original and target sites.

To do that you can download both uploads folders to your local drive. And then use a specific tool or a file manager with files/directories comparison functionality. (E.g. WinMerge (free) or Total Commander (shareware) for Windows). By the way, Total Commander supports FXP, so you can directly copy files from one server to the other without downloading the files to your local drive.)

Here’s a quick overview of the simple process how to copy files via FTP from your original site to your target site using FileZilla:

  1. Connect via FTP to your original site (/wp-content/uploads/ folder) and copy to your local drive the files/folders with media library (in my example the folders are 2015, 2016 and 2017).

    FileZilla user interface. Downloading folders with media files from the original server.

    FileZilla user interface. Downloading folders with media files from the original server.

  2. Connect via FTP to your target site and copy the files/folders with the media library from your local drive to your target site (/wp-content/uploads/ folder).

    FileZilla: Uploading the data to the target server.

    FileZilla: Uploading the data to the target server.

  3. 3. Remove the files from your local drive if you don’t need them. And that’s it!

Now you can open your your target website in your browser and you’ll see that all images and other medial files are in place.


Step 9. Disallow access to one of your sites to avoid duplicate content

In most cases you’ll want to hide content of your target site (in case it’s the testing site) from search engines.

On Step 7 you made the setting inside your WordPress site to discourage search engines from indexing the site. But I would not trust this setting 100%.

In order to hide your website copy completely from web crawlers and search engines and thus minimize the risks of getting a duplicate content, I suggest using two simple and free ways:

  1. Set password to the whole installation folder of your WordPress site using a cPanel tool.
  2. Restrict access to your site by IP.

You can use any of the two methods. See below how you can do it.


Setting password to the folder with your WordPress installation

When your website is password-protected, web bots including search engines crawlers will not be able to access and index your website.

There are some WordPress plugins that can let set the password super easily. However, I’m not a fan of using yet another plugin, because each plugin makes your site slower, more vulnerable to hackers and more sensitive to incompatibility issues. So, I’ll show you the plugin-free method to prompt anyone visiting your WordPress site to enter a password.

Some hosts may contain the tool in cPanel called “Password Protect Directories”. It lets you set the password for any directory with literally two clicks. Just select the application root directory (e.g. /public_html/ or a subdomain folder) and set the password for it.

But if your host does not have this feature for you, here’s how you can do a similar thing manually.

Go to your cPanel File Manager. And in the root directory select ‘public_html’ folder (of locate a subdomain folder), right-click on it and select “Password Protect” in the popup menu:

Selecting a folder in cPanel File Manager to protect it with a password

Selecting a folder in cPanel File Manager to protect it with a password

Then enter any name for the selected directory. Also enter any username and set the password. (A visitor will need to specify these username and password to view your website.)

Set password for a directory

Set password for a directory

By the way, to remove the password protection or this directory, simply deselect the checkbox “Password protect this directory”.

And then, when trying opening your website, anyone will have to enter the user name an the password:

Opening a website with password-protected directory

Opening a website with password-protected directory


Restricting access to your website by IP

I like this method very much. It does not make you remember user name and password. It’s especially convenient if you have a static IP address.

You need to edit your .htaccess file in your WordPress installation folder (by default it’s /public_html/)

You can do it using cPanel File Manager.
If you can’t find .htaccess file in your wordpress installation folder, make sure hidden files are visible:

Show hidden files in cPanel File Manager

Show hidden files in cPanel File Manager

Find out your IP address. You can do it here.

So, let’s assume your IP address is
Then to forbid access to your site to anybody except you, add this code to the .htaccess file:

# Block access to anyone except the specified IPs
order deny,allow
deny from all
allow from

If you have a dynamic IP address, you need to find out your IP range. Read this section of my website security tutorial to learn how you can do it.

Your website will open fine for visitors with the allowed IPs. And anyone else will get 403 error message (“website forbidden”).

That’s it with content duplication protection.


Step 10. If required, re-setup the plugins on your target site

When a site is migrated or copied to a new domain or subdomain, some of the plugins on the target site may become not functional. This can happen because the settings of the plugins can be stored in files which are not automatically copied properly by All-in-One WP Migration plugin.

For example, caching plugins and some security plugins may store their settings in .htaccess file. And the .htaccess file is not automatically copied to the target site. It means, that after you copied the site to a new (sub)domain, you may need to re-set some of your plugins if you want the to work on your target website.


Step 11. Delete backup file from your original WordPress (optionally)

On Step 4 you created a backup of your original website. You have downloaded it to your local drive. But the backup file also stayed on your server.

In order to clean up and save some space on your server, you can delete the backup (if you are not going to use this backup anymore).

You can do it easily. Simply go to your original website dashboard / All-in-One WP Migration / Backups. And delete the backup from the list:

Deleting backup from WP Migration plugin

Deleting backup from WP Migration plugin




This tutorial is the best free method I know so far to copy, clone or migrate a big (yes, big) WordPress site to another domain or subdomain. Your website can be actually any size. But its part without media files (e.g. images) should be no more than 500 MB (it’s the restriction of a free version of the plugin used).

This method works perfectly even on a budget shared hosting (by the way, I recommend these ones.

I especially recommend using this method to create an independent copy of your website which will be available on its own domain or subdomain. You can use this website copy to test anything (e.g. new plugins, new design etc).

The method basically consists of two parts:

  1. Using a free version of All-in-One WP Migration plugin (to copy your site without media library).
  2. Using FTP (to copy media files which are in the uploads folder).

There are also other free methods which let you clone a website or create a staging area. But each of the methods have some restrictions. However, in some cases you may find these methods more convenient. You can have a look at these methods overview above.

You can download a PDF version of this article (1.52 MB):

Subscribe to my Free Researches
Work on your blog and small business more efficiently!

BTW, I respect your privacy, and of course I don't send spam, affiliate offers or trade your emails. What I send is information that I consider useful.

Share the knowledge...Share on Facebook
Tweet about this on Twitter
Share on LinkedIn


  1. I am searching on google how to transfer subdomain to main domain and I find your post. Hopefully, now we can migrate website easily. Thank you!

  2. Michael,

    Thanks for the article on using the free version of All-In-One WP migration. I learned a lot by going through the article.

    Here is my situation and what I want to be able to do. I have a website currently hosted on the Internet using a shared account by NameCheap. I have a basic main website hosted there and I am taking focused niches that are mentioned as part of the main website and hosting my focused niche websites as subdomains of that website. Obviously, the format is:

    On my personal desktop computer, I have installed a Xampp “localhost” that I can use to develop websites, mostly WordPress, and get them ready for deployment prior to actually moving them to the Internet on my NameCheap hosting service.

    Moving websites from my localhost to a domain location on my NameCheap hosting site is not an issue. I can make that happen. I am not very sure how to transfer a new localhost website to a subdomain location on my NameCheap hosting site. The subdomain location on my NameCheap hosting site is currently an active website, but it has gone defective in that I can no longer make changes or updates to the website. The website is an Elementor Pro site and Elementor can no longer make website changes. When I try to use All-In-One WP migration to backup the website, I get an error message that the backup failed so it looks like that program does not function correctly any longer.

    I want to replace the website hosted on the Internet by NameCheap with the working latest edition of the website that is currently located on my desktop computer by my Xampp localhost set up. This seems to be the backward version somewhat of this article of yours that I just read. What I am wanting to do is take my testing site website and move it to an Internet subdomain location. Any suggestions as to the steps I will need to follow? I want to keep the current subdomain’s name along with the current subdomain’s login information (user name and password).

    If you have any suggestions or help that you can provide that will help me make transfer work as I would like, I would appreciate it.

    Once I know how this needs to work, it should be a piece of cake to keep the Internet version of the website supported with updates from my localhost version of the website.


    Thomas Chapo Sr.

    • Hi Thomas,
      The developers of the plugin keep on updating the plugin (the last update as I see was 3 days ago), so it should work as expected. I can suggest asking your question regarding “backup failed” issue at the plugin’s free forum support.
      In general, I have not tried the plugin with migrating from a localhost. But the plugin should do it as well.
      Also, there are other migration plugins out there. You can try them as well.

  3. G’day Michael,
    Have you by any chance made this article available in PDF to download?

    • Here you go, Bruce! The download link with the PDF is above.

      • As always thank you Michael.
        PDF downloaded.

        • Happy to help!

          • Michael,
            While on the subject of migration etc…
            I need to upgrade my site – new theme and work with WP Blocks unlike before with the classic program.
            What’s your thoughts on the best process?
            It was suggested to me to set up a subdomain – build the new site in this perimeter (adding material as needed from the original site theme) and then “transfer” (migrate) the new theme with content from there.

            Your suggestions would be greatly appreciated… taking into account that this may still be part of the above subject matter?

            thanks in anticipation.

            • Bruce,

              A subdomain or another domain would work.

              So, basically I think you already know what to do. Not sure if I will tell you anything new, but here’s just the order I would do it with some tips:

              1. Before starting any manipulations, make all kinds of backups (if you use cPanel – partial backups of DB, Files, Full cPanel backup).

              2. Set up a new subdomain or domain for development (I’d prefer a new domain for a dollar so that it’s just easier for me not to mess up with the main domain)

              3. Build your new website on the development (sub)domain. Make sure you don’t link to the resources (images, libraries). Also, note that any comments or any other content updates that you continue getting on your main site do not appear (obviously) on your developed site.

              4. When your development site is ready, make a backup of it (just in case if something goes wrong or you mess up on the next steps you don’t lose your development site). Again, BD, Files, a full cpanel backup. Yeah, here’s is a small tip: when making backups make sure you don’t have any unwanted large files so that your backups don’t grow in size (for instance, before making a backup remove previous backups files from your files so that they are not included in your new backup).

              5. Now you need to replace your original site with the site you have developed. Provided you have backups of both your original site and the developed site, you can go on. I’d remove the installation of your main site (in cPanel of Softaculous there is such an option), and install a clean (default) WP site on its place. And then do the migration with All-in-one WP Migration plugin and FTP for bigger files like I suggest in this tutorial. Removing the main site installation is desired so that no orphaned trash is left after migration. It’s technically not required to remove your main site installation, but it’s just a cleaner way of migration.

              6. Check that your main is updated and is functioning.

              7. Remove your developed site (on the new subdomain or domain).

              8. Check that your main site is working.

              9. Make a backup of your new site.

              10. Celebrate 🙂

  4. Upload wont continue. Stuck randomly ay 68, 70, 90%

    • If you mean the import of your backup fails via the plugin, then it’s likely the restriction of your hosting that cuts the operation. Any decent hosting should be able to handle the import operation via this plugin.

  5. Hi, sounds exactly what I need. Your article is very clear and easy to understand.

    However, when exporting my site (without media files) there are about 10 times the amount of files (19000) it is exporting and the file I get is HUGE (over 5 GB). I have a webshop with about a thousands products which each have on average 20 variations. Is there any other things I can easily exclude from the export and transfer them with FTP later?

    Which other files are big aside from Media files?
    (I tried exporting without media and without sql database but it didn’t make much difference).

    Thanks for your help!

    • Judith,
      I think in your case it’s better to use a paid version of a plugin that allows to migrate huge websites.
      If you want to do it for free, you can try moving all files by FTP, clone a database, then change the settings in the configuration file(s) and finally update database tables to replace old domain with a new domain. But without proper technical skills this is impossible to do.

    • Another option is to use a hosting that allows to create clones of your website with a click of a button (so called “staging” area).

      • Thanks for your fast reply. I’m guessing that I can’t just upload the 6G export file through FTP to the plugin? Just to double check 😉

        • The free version of the WP-Migration plugin allows to create backups upto 2 GB. If your backup (without media files and other files that you can exclude) weights more than 2 GB, then you can’t use the free version. The paid version of this plugin and some other plugins use chunks to import your huge backup, so it should not be a problem.

  6. Thanks for all the recommendations. It looks like you take the time to write the article. Excellent job¡

  7. Hi Michael,

    What a great tutorial! It helped me tremendously!

    One problem I came across and couldn’t find a solution for is when I password protect the staging site using both your methods, I get an error with my theme needing to access the google fonts:

    Warning: Invalid argument supplied for foreach() in /public_html/ name/it-framework/includes/it-helpers.php on line 926

    Do you how to get around this? Thank you!

    • Hi Sia,
      Hmm, this sounds strange. Everything inside of your files is not limited in any way from accessing anything outside of your files. Thus, anything including google fonts should be accessible with no issues.
      Something specific in your case looks not right to me. Perhaps something specific in your theme, but it looks strange to me.
      If you don’t want to dig deep to find out what’s wrong in your specific case, try using just Restricting access to your website by IP method (if you have not tried it yet). If it does not work then only discouraging website from search engines (step 7) is the only option that should work with no issues.

      • Hi Michael,

        I contacted the owner of the theme and they said it was due to me restricting access from google fonts. Trying both your methods gave me the same result. However, I did manage to hide the error in the meantime but doesn’t fix the problem. Not a huge deal but I thought you might have come across something like that before. Thanks for your reply and help!

        • Hi Sia,
          I see. However, it still seems incorrect to me that your theme stops working properly if you password-protect your folder or restrict access by IP. These methods should not do anything with the functionality of the theme. And if it does break your theme’s functionality like in your case, then it looks like something is not properly coded within the theme. But after all it’s hard to say anything specific without looking at your particular case and without talking to your theme developers.

  8. Thanks!
    I looking for this for my client’s site.

  9. I created a subdomain and downgraded successfully from WP 5.0.1 to
    WP 4.9.7(?) .

    i tried to clone with “All-in-One WP Migration”.
    When I go to install on the subdomain I get the following message from
    “All-in-One WP Migration” :

    Maximum Upload Filesize: 64MB

    My archive size just passed 1GB. I also noticed the date on this page is
    June 15, 2017. Has anything changed with “All-in-One …” in the past year?

    • Hey Todd,

      Thanks for your question.

      The free version of the plugin support backups upto 512 MB. To increase the limit like that you need an small additional plugin which is developed by the same guys (All-in-one plugin’s developers). Here’s the page where you can get the additional plugin

      However, since you have the backup which is more than 512 MB, you need ether a paid versions of the plugin, or make your backup less heavy (e.g. by not including uploads/images in the backup and moving them separately like I show in my tutorial).

  10. Ajish Cheriyan says

    I have moved my website very recently but now I’m experiencing some of the issues like speed, downtime. Speed worries me a lot. You have shared some great info on the matter thank you.

  11. Hi Michael,
    that’s a great tutorial! I’ve done it step by step. My only problem is that my export file is 957 MB without media library so I can’t import it into the new site:( Can you tell a free solution in this case?
    Many thanks,

    • Hi Noémi,

      Thanks for your comment.

      If your backup is that big even AFTER excluding media files as I suggest on this step, then my tutorial will not work for you, unfortunately.

      However, try to understand why your backup is so large. Perhaps it contains some files which can be excluded from the backup or even deleted (numerous backups, logs etc).

      A size of a backup without media files of your size looks too big.

      Another suggestion is to exclude database from the backup and export/import it separately.

      Hope it helps and your generated backup will be within 500 MB limit.

  12. HI Michael,

    We actually want to use the all-in-one-migration to clone the original site and create a duplicate site (of which we will then change aspects of). We still need the original site in full function and live and will have the duplicate in maintenance mode until ready. Can you confirm the original site will not be negatively affected? Can we still login to the original site once we perform this cloning as I have read the username and passwords to login move across to the new domain.

    Just nervous not to MIGRATE, but instead just CLONE, so the original is still good.

    Thank you – Kerryn

    • Hi Kerryn,

      Thanks for your question.

      Yes, absolutely. The original site stays safe and untouched. The only thing that you do with your original site is to install the plugin that makes a backup of your site.

      However, I strongly suggest that you still need to make a backup of your original website before all. It’s a good idea that you always should do so before installing any plugin, and just to be safe from your own wrong actions such as unintentionally modifying your original site instead of the copy.

      You still will be able to log in to your old site and it will be NOT affected in any way (apart from the all-in-one-migration plugin you install). By the way, you can remove the All-in-One WP Migration plugin (from both original and clone sites) after you complete the cloning.

      The new site will have the same login and password as your old site, because the new site will be a copy of your old site. And you can change the login credentials later if you need.

      All-in-One WP Migration plugin is actually a sort of backup plugin with a specific functionality. It does not affect the original website more than a backup plugin does.

      The plugin works well when both cloning and migrating. The original site will stay good, no worries.

  13. Great thanks Michael

  14. Hi – I just wanted to ask. I am migrating from a subdomain to the main domain:

    As you can see the development site does not have an SSL cert but the new one does.

    When using the find and replace on export, do I need to include the http and the https ?


    • Hi Kevin,
      Migrating to HTTPS is a bit more complicated thing than just using search & replace. But yes, you will need to replace HTTP with HTTPS during the process.
      By the way, this week I’m publishing a comprehensive 10K-word tutorial on migrating from HTTP to HTTPS. Feel free to subscribe to my blog updates to read the tutorial.

    • Just wanted to let you know that my tutorial on migrating website to HTTPS is ready. You can find it here.

  15. Hi Michael,

    I did the method you followed to migrate to a different host, the all in one plug in was not able to migrate the subdomain. is it normal ?

    • Hi Faisal,
      Thanks for the question.
      Yes, the plugin does not migrate subdomains together with the main domain.
      If your subdomains are different WordPress installations, then you need to migrate them separately.
      If your subdomains are just folders and files, then just move them (via ZIP file or FTP). You may need to replace your old URLs with new URLS additionally in the files (e.g. using any text editor or a special multi-file text replace tool for this purpose).
      Hope it helps.

      • Thanks Michael for your prompt reply.

        Question 1

        So if I have to change the URL of my website in addition to migrating from the host. I just use the find and replace function ( URL) of the plugin.

        I DO NOT need to manually change the URL inside the files of after export. Am I correct ?

        Question 2

        other than databases, themes, plugins, what other wordpresss content it moves ( I am comparing it with duplicator plugin, that moves complete wordpress installation)

        • Hi Faisal,
          Please see my answers:
          > if I have to change the URL of my website in addition to migrating from the host. I just use the find and replace function ( URL) of the plugin. I DO NOT need to manually change the URL inside the files of after export. Am I correct ?
          Yes, you are correct. Find and replace function is enough. No need in manual changing URLs inside the files.
          In my previous reply I mentioned manual changing URLs in your subdomains’ files because the subdomains are not affected by the plugin.
          By the way, according to Duplicator description and technical FAQ I think Duplicator works the same way (i.e. it does not migrate subdomains together with the main domain)

          > …what other wordpresss content it moves ( I am comparing it with duplicator plugin, that moves complete wordpress installation) ?
          All-in-one Migration plugin moves complete WordPress installation too.

          • Wonderful Micheal, I was able to migrate my website to the new URL with this method flawlessly. My only point would be to ask that my old domain name had a count of visitors ( i was keeping track through plugin) and also had google analytics. Would the new website use the old website count. For example if the old website was giving a count of 100,000 visitors, will that be carried over to the new website. As I have some issue with the plugin , so I am not able to verify this at the moment.

            • Hi Faisal,

              I’m glad that you’ve managed to migrate your site!

              As regards your question, if you mean how many visitors will be visiting your site, then it depends. Usually, if you change your domain name, then the new website experiences a drop in visits. But after sometime it can regain to a similar level as before as Google re-indexes your new site. This info may be useful to you.

              Besides, what you may want to do is to set redirects from your old domain pages to a new domain pages. This is useful if your old domain has a lot of backlinks. And in order to keep the SEO juice coming to the old domain, you may want to set 301 redirect from your old domain to a new domain, or even set redirects from old pages to the corresponding new pages. Here is an overview of the process. You need to keep the old domain registered though.

              • Thanks Michael, Is there any free plug in that helps recover the social shares, i can now see that my social shares are reset to zero after domain migration 🙁

                • Yes, unfortunately the social shares are always reset when you migrate domains.
                  To be precise, the number of shares stay on your old domain. And the new domain simply does not have any shares yet.
                  There are some premium plugins that display on their share buttons the numbers of the shares from your old domain summed up with the number of the shares on your new domain. But technically these plugins do not recover social shares or move the sahres from you old domain to your new domain. These plugins simply make two requests before displaying the number of shares – to your old domain and the new domain and they sum up the numbers before displaying the numbers on the social buttons. You can find these plugins by searching “social shares recovery” or similar. I have not tried any of them, so I can’t recommend any plugin specifically.

  16. Hi Michael,
    Thanks for such a detail article about migration a big site to a new domain. This is one of the best articles I ever read about the migration of WordPress Website. Thanks again for such an effort.

It's important for me to know what you think