Nowadays, a server operating system might host some of the following services:
- Web service and associated applications used by websites
- Mail service
- Database services
- DNS service
Often there’s also an installed control panel software that helps to facilitate the deployment and management of these services. So migration of the data and services from one server to another one is, in this case, the process of transfer of the hosting control panel data and content (such as websites, mail, databases, DNS zones) to the new server.
Disadvantages of Manual Backup/Restore
![Disadvantages of manual backup / restore - server migration to Plesk](https://cdn1.plesk.com/wp-content/uploads/2017/11/27023224/fullwidh-visual1.png)
Generally, the migration procedure backs up some data on the old server. Then, transfers the backup file to the new server and restores it there. For such a complex environment, the transfer of data to another server isn’t the easiest option. You can, of course, move all the data piece by piece using the native backup/restore tools for each server component and file copy. However, it often takes an unreasonable amount of work-time and manual operations.
The other disadvantage is that it’s not possible to make a seamless transition if the services on the old server are active. Some data will be lost in transfer staying on the old server or some services will be down during the transfer.
Migration to a Server with Plesk
Let’s now suppose you have Plesk Obsidian on the new server. In this case, it will be easier to transfer all the data (web/mail/databases/DNS/Control Panel data). Because Plesk provides a special tool, the Plesk Migrator Extension, which automates the process.
This is the migration tool that Plesk provides for migration to the latest, recommended Plesk Obsidian versions. You install it via Plesk Panel like any other Plesk Extension and it has a handy user interface too.
There can be different reasons for migrating services and/or data from one server to another. Let’s go through the typical server migration scenarios and see how Plesk makes the whole process simple.
Moving your services to the Cloud with Plesk and our hyperscaler partners
Migration from another control panel/hosting environment to Plesk
Moving Your Services to the Cloud with Plesk
It’s become popular to move onto cloud services and scale your business. You can easily install Plesk on the most-loved cloud platforms, like:
- Amazon AWS
- Microsoft Azure
- DigitalOcean
- Vultr
- Google Compute Engine (we have yet not blogged about this yet, but you can install Plesk on a Google Cloud VM the same way as a regular stand-alone Plesk server)
And once you install Plesk, you can migrate to the cloud instance with Plesk from anywhere, in a standard way.
There will practically be no difference as it doesnt depend on where Plesk is installed (cloud instance, virtual container/ machine or a physical server). You always migrate to Plesk using the Plesk Migrator Extension (this is the number one tool for Plesk migration).
Migration From Another Hosting Panel/Hosting Environment to Plesk
If you have any control panel you would like to leave for Plesk – check out our list of supported hosting panels.
- Specific versions of Plesk for Windows and Linux: 8.6, 9.5, 10.4, 11.0, 11.5, 12.0, 12.5, 17.0, 17.5, 17.8.
- cPanel 11.5
- Helm 3.2
- Confixx 3.3
- Parallels Pro Control Panel for Linux 10.3.6
- Plesk Expand 2.3.2
- DirectAdmin 1.51 (just custom migration is supported when you switch from DirectAdmin installed on Ubuntu 10.x)
These objects, settings, and data will be transferred during migration:
Plesk Migrator moves the following: service plans, websites featuring content (e.g. mail, files), and subscriptions with related domains for your convenience. In the case of customer and reseller accounts without domains, these won’t be migrated.
Additionally, Plesk service settings will not be transferred. These include Fail2Ban settings, firewall configurations, and installed PHP handlers.
How to Install Plesk Migrator
You can complete Plesk Migrator’s installation via Plesk’s interface. Here’s how:
- Log in to Plesk as the administrator, on the destination server
- Navigate to Tools & Settings, go to Updates & Upgrades, then Add/Remove Components
- Hit Install beside the Plesk Migrator component
Prefer to process the Plesk Migrator’s installation with a command line instead?
- In Linux, you can sign in to the destination server through SSH as the root user, or in Windows through RDP as the administrator user
Follow these steps:
- On Linux, run this command:
plesk installer
- On Windows, go to the command prompt and run
"%plesk_bin%\ai.exe" --console.
- Continue with the installation wizard, and follow the directions provided until you’re invited to choose components
- Pick the “Plesk Migrator” component to be installed and run through the rest of the procedure, following the instructions as they appear on-screen
What if none of the supported hosting platforms are installed on the source server? You can migrate from a server running an unsupported hosting platform (or none at all) with custom migration.
With custom migration, you’ll create a hosting description file written in JSON or YAML and detail the objects to be migrated (such as mailboxes, domains, etc.). You can perform custom migration even if you lack administrative access to the source server.
How to Migrate from a Linux Server with Custom Hosting
This topic covers migration to a Linux server running a control panel that isn’t one of the supported source platforms, or one with hosting but without a control panel. These scenarios are supported:
- Migrating from a server with custom hosting (with administrative access): This situation requires you to create a hosting description file including a list of subscriptions, clients, mailboxes, etc. and defines where mail and web content data can be found on the source server. The file’s format is readable by humans and covers the majority of popular hosting services. It could be in JSON or YAML.
- Migrating from a server with custom hosting (without administrative access): In this scenario, it’s presumed that you’ll manually transfer database dumps and web content data from the destination server to the source one. You’ll need to make a hosting description file, but it will specify where database dumps and web content data will be located on the destination server.
Please be aware that you can only use the command line to migrate from servers with custom hosting, rather than the Plesk interface.
Follow these directions if you have administrative access to the server:
- Log in to the destination Plesk server through SSH.
- Ensure that Plesk Migrator has been installed. If it hasn’t, follow these instructions to install it.
- Set up the hosting description file, and name it hosting-description.[yaml/json] (depending on the selected format). Place it in the /usr/local/psa/admin/sbin/modules/panel-migrator The file should include the list of clients, mailboxes, subscriptions, etc. set to be migrated from the source server. Sample hosting description files are available here.
- Make a directory titled conf in the /usr/local/psa/var/modules/panel-migrator/ Set up the migrator tool configuration file, name it config.ini, and put it in the /usr/local/psa/var/modules/panel-migrator/conf/ directory. The file needs to include the source server’s configuration and access information. Check the sample configuration file here to learn more.
- Run this command to create the migration list:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator generate-migration-list
The name of the resulting file will be migration-list. It will be located in the /usr/local/psa/var/modules/panel-migrator/sessions// directory. The migration list comprises numerous objects that will be migrated, including service plans, customer/reseller accounts, etc.
- Make changes to the migration list: you can take out domains you don’t want to be included in the migration, assign domains you intend to migrate to service plans, or re-assign them to different customer accounts.
- This step is optional: running the command below to validate the hosting description file:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator validate
You can learn more about validating a hosting description file in this guide.
- To start the migration, run this command:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator transfer-accounts
- This step is optional: run the following command to undertake another content sync:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator copy-content
This ensures that changes to hosting content that could have taken place on the source server during the migration will be replicated on the destination server. You can use the following commands to re-sync certain content types only: plesk-migrator copy-web-content, plesk-migrator copy-mail-content, or plesk-migrator copy-db-content.
- It’s recommended that you run this command when the migration is complete, to check the operability of objects migrated to the destination server:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator test-all
A report will be generated by the post-migration check. It will be saved to a file called test-all-report. in the /usr/local/psa/var/modules/panel-migrator/sessions// directory.
Customer accounts, services, and subscriptions are presented in the report in a tree structure. Each unsuccessful post-migration test will result in an entry being written in the log. This includes information on the failure and steps for verification and resolution.
You can get a deeper insight into all the post-migration checks in this guide.
What can you do if you don’t have administrative access to the server? These directions will help:
- Use SSH to sign in to the destination Plesk server.
- Check that Plesk Migrator has been installed.
- Manually copy the mail and web content data from the source to the destination server. With web content, you’ll need to copy the document root directories of any domain you intend to migrate. This should include all included files and subdirectories. You can place the content in any location on the destination server.
- Create dumps of any databases that belong to the sites you plan to transfer. Next, manually copy them to the destination server.
- Get the hosting description file ready. You should title the file hosting-description.[yaml/json] (depending on the format you choose) and put it in the /usr/local/psa/admin/sbin/modules/panel-migrator The file should include the list of clients, addon domains, subscriptions, mailboxes, etc. that will be transferred from the source server. Sample hosting description files are available here.
- Get the migrator tool configuration file ready. Title the file ini and put it in the /usr/local/psa/admin/sbin/modules/panel-migrator directory. This file needs to feature the source server’s access and configuration information. For reference, you can use this sample configuration file.
- Run this command to create the migration list:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator generate-migration-list
The resulting file will be titled migration-list and located in the /usr/local/psa/var/modules/panel-migrator/sessions// directory. Inside the migration list, you’ll find a list of the objects to be transferred, such as service plans, domains, etc.
- Make changes to the migration list. You can take out those domains you’d rather not migrate, assign domains you plan to migrate to service plans, or re-assign them to various customer accounts.
- This step is optional: use this command to validate the hosting description file:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator validate
To find more detailed information on hosting description file validation, click here.
- To start the migration, run this command:
/usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator transfer-accounts
How to Migrate from a Windows Server with Custom Hosting
In this topic, we’ll explore how to migrate from a Windows server that runs a control panel that isn’t one of the supported source platforms, or one with hosting but without a control panel. These situations are supported:
- Migrating from a server with custom hosting (with administrative access): This situation involves generating a hosting description file. It features the mailboxes, addon domains, subscriptions, etc. It also shows where web and mail content data can be found on the source server. This file is human-readable, written in JSON or YAML, and covers the majority of well-known hosting services.
- Migrating from a server with custom hosting (without administrative access): In this situation, the assumption is that you will transfer content data and database dumps from the source to the destination server. A hosting description file will be generated. It should identify where web content data and database dumps can be found on the destination server.
Please be aware, though, that you can only migrate from servers with custom hosting with the command line. You can’t do it using the Plesk interface.
The following directions apply if you have administrative access to the server:
- Use RDP to sign in to the destination Plesk server
- Check that Plesk Migrator has been installed
- Get the hosting description file ready, and (depending on the format) name it hosting-description.[yaml/json]. You should put this in the %plesk_dir%admin\plib\modules\panel-migrator\backend Inside the file should be a list of addon domains, subscriptions, clients, etc. that will be migrated from the source server. Sample hosting description files are available here.
- Make a directory titled conf in the %plesk_dir%var\modules\panel-migrator Get the migrator tool configuration file ready and name it config.ini. You should put it in the %plesk_dir%var\modules\panel-migrator\conf directory. This should include the configuration and access information for the source server. For reference, you can find the sample configuration file here.
- Run this command to create the migration list:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat generate-migration-list
The resulting file will be called migration-list. It will be located in the %plesk_dir%admin\plib\modules\panel-migrator\backend\ directory. The migration list includes numerous objects to be included in the migration, such as service plans, customer and reseller accounts, etc.
- Make changes to the migration list. You can take out the domains you don’t want to be transferred, assign domains to be migrated to service plans, or re-assign them to different customer accounts.
- This step is optional: run the following command to validate the hosting description file:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat validate
More information on hosting description file validation is available here.
- To start the migration, run this command:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat transfer-accounts
- This step is optional: Run an extra content sync with this command:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat copy-content
This ensures that any changes to hosting content that could have occurred on the source server during migration are replicated on the destination server. Use one of these commands to re-sync certain content types only: plesk-migrator.bat copy-web-content, plesk-migrator.bat copy-mail-content, or plesk-migrator.bat copy-db-content.
- You’re advised to take this step: once the migration has ended, you can check the operability of the objects transferred to the destination server with this command:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat test-all
This check will generate a report. It will be saved to a file titled test-all-report. in the \var\modules\panel-migrator\sessions\\ directory. You can find where is located on your server by opening the command prompt and running this command:
reg query "HKLM\SOFTWARE\Plesk\PSA Config\Config" /v PRODUCT_DATA_D /reg:32
The report’s tree structure represents a hierarchy of subscriptions, services, and customer accounts. For each failed post-migration test, an entry will be added to the log. This will feature details about the failure and what you can do to verify or resolve the possible problem.
You can find details on all post-migration checks here.
Take these steps if you don’t have administrative access to the server:
- Use RDP to sign in to the destination server.
- Ensure that Plesk Migrator has been installed. If not, follow these directions to install it.
- Copy the web and mail content data from the source to the destination server manually. In the case of web content, copy the document root directories of those domains you intend to transfer. This should contain all included files and subdirectories too. The content can be placed in any location on the destination server.
- Generate dumps of all databases that belong to the sites you want to include in migration. Copy them to the destination server manually.
- Get the hosting description file ready and title it hosting-description.[yaml/json] (depending on the format). This should be put in the %plesk_dir%admin\plib\modules\panel-migrator\backend This should include a list of mailboxes, subscriptions, client list, etc that will be transferred from the source server. Sample hosting description files are available here.
- Get the migrator tool configuration file ready and name it ini. Put it in the %plesk_dir%admin\plib\modules\panel-migrator\backend directory. This file should contain the access and configuration information for the source server. For reference, you can check the sample configuration file here.
- Run the command below to create the migration list:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat generate-migration-list
The name of the file created will be migration-list. It will be located in the %plesk_dir%admin\plib\modules\panel-migrator\backend\ directory. On the migration list, you’ll find the list of objects to be migrated. These are service plans, reseller and customer accounts, etc.
- Change the migration list: you can take out domains you don’t want to include in the migration, assign domains you want to transfer to service plans, or re-assign them to different customer accounts.
- This step is optional: run this command to validate the hosting description file:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat validate
More information on validating hosting description files is available here.
- Run this command to start the migration:
%plesk_dir%admin\plib\modules\panel-migrator\backend\plesk-migrator.bat transfer-accounts
Migration to the New Plesk and Operating System Versions
Another common reason to migrate to a server managed by Plesk is to update the old Plesk version and/or Operating System. Please check the Plesk EOL policy. We recommend that you migrate to the latest Plesk version (Plesk Obsidian) on a supported operating system.
You can check what upgrade/migration options are available for your OS/Plesk version in the Migration Process Guide.
More Common Migration Scenarios
- Joining and migrating services from several Plesk servers, one by one, to a new, bigger, more powerful server.
- Migrate part of Plesk subscriptions to a new server.
- Shift to the Plesk Multi-Server product.
- Moving data to a server in another datacenter.
- Switch to a server with upgraded hardware.
- Transfer from a physical server to a VM/container.
In any case, the Plesk migration process is the same – you always migrate to Plesk using the Plesk Migrator Extension on the target Plesk server.
Common Questions Around Migration to Plesk
Usually, when the migration planning has started, the following questions appear.
- What should I configure/check/install on both servers?
- Are there any ports that need to be opened on the servers?
- Will be there any services downtime during migration?
- How do you sync outdated data on the old server during migration?
- How much disc space do both servers need for migration?
- Is it possible to keep IP address of the old server instead of changing the domains’ DNS records?
You can find the answers and more details about the migration process in the Migration Process Guide document.
In most cases, Plesk migrator will warn you about the problems which need to be solved when it does automated pre-checks. Also, it will warn about problems when it does automated post-checks on migrated objects. Based on the warnings you can always do required corrections and repeat the migration of the problem customers/mailboxes/websites/databases any time.
Typical Plesk Migration Steps
A short overview of the migration steps (more in detail in the Migration Process Guide)
For steps 1 and 2:
- Install Plesk on the destination server.
- Install all 3rd party components/software that your services use on the source server.
- Make sure to install all products licenses.
- If you plan to migrate databases, make sure that you install and register database servers on the Plesk Panel. Do this in the destination server of the same or higher version than the source server.
- Install all available PHP versions via Plesk Panel installer on the destination server.
- For Windows – Install the latest .NET framework version on the server.
- Then, you can just install the Plesk Migrator Extension on Plesk Panel in the destination server.
- Start the migration to Plesk from there.
- Follow the hints of the automated pre-check/post-check procedures.
For step 3 and 4:
This will not interrupt your services on the source server. It will merely copy data from the source server and will validate them on the destination server. It will warn you if something is missing or if you need to configure something.
When you are satisfied with the migration result, you can sync data in step 6 from the source server to update it and switch domains’ DNS (or move IP addresses) to complete the migration in step 7.