• We value your experience with Plesk during 2025
    Plesk strives to perform even better in 2026. To help us improve further, please answer a few questions about your experience with Plesk Obsidian 2025.
    Please take this short survey:

    https://survey.webpros.com/
  • On Plesk for Linux mod_status is disabled on upgrades to improve Apache security.
    This is a one-time operation that occurs during an upgrade. You can manually enable mod_status later if needed.

Question Plesk Migration Obsidian to Obsidian: How Long To Expect?

Matt M

Basic Pleskian
Server operating system version
Alma Linux 9
Plesk version and microupdate number
18.0.74 Update #3
I am working on migrating from one server to another, both running the latest Plesk Obsidian for Linux, using the Plesk migration tool. For the smaller subscriptions, it works like a dream, but I have a few websites that take up a much larger amount of disk space, several around 30-35 GB and one around 180 GB. How long should I expect for transferring such amounts of data?

I started with one of the larger websites (trying to do this one at a time), and it has been stuck on the following line for about 2 hours now:
Code:
[2026-02-08 14:40:35][INFO] Merging local and remote configuration dumps in '/usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/plesk.backup.source.downloaded.merged.tar'

I am using the CLI tool.
 
Hi, @Matt M . There is no way to precisely point out how long a migration would take as it depends on the size of the data being transferred, the network speed, and server performance. It can take anywhere from a couple of hours to 24 hours or so.
 
It is always getting stuck on the same step when I run `plesk-migrator check`. Here is the full output. I left it running overnight, and this was still the same step it was on. Is this step expected to take a long time?

Code:
# /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator check
[2026-02-08 23:52:46][INFO] Initialize Plesk Migrator
[2026-02-08 23:52:46][INFO] Target Plesk host: ***
[2026-02-08 23:52:46][INFO] Source Plesk 'source' host: ***
[2026-02-08 23:52:46][INFO] Target Plesk host: ***
[2026-02-08 23:52:46][INFO] START: Check if migration list file exists
[2026-02-08 23:52:46][INFO] FINISH: Check if migration list file exists
[2026-02-08 23:52:46][INFO] START: Check connections
[2026-02-08 23:52:49][INFO] FINISH: Check connections
[2026-02-08 23:52:49][INFO] Check migration compatibility of source and target Plesk versions
[2026-02-08 23:52:49][INFO] Check that all required components are installed on source Plesk
[2026-02-08 23:52:49][INFO] START: Check whether services operate properly
[2026-02-08 23:52:50][INFO] FINISH: Check whether services operate properly
[2026-02-08 23:52:50][INFO]
Services' Issues
|
|- Service 'web on target Plesk server'
|
|- Service 'ftp on target Plesk server'
|
|- Service 'mail on target Plesk server'
|
|- Service 'dns on target Plesk server'
|
|- Service 'mysql on target Plesk server'
|
`- Service 'plesk on target Plesk server (***)'

[2026-02-08 23:52:50][INFO] The report was saved into the file /usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/test_service_report.2026.02.08.23.52.50
[2026-02-08 23:52:50][INFO] ******************** Summary ********************
[2026-02-08 23:52:50][INFO] Operation finished successfully for 6 out of 6 services
[2026-02-08 23:52:50][INFO] Checked objects      Total Successful Warnings Failed
[2026-02-08 23:52:50][INFO] Service              6     6          0        0
[2026-02-08 23:52:50][INFO] All services are working correctly.
[2026-02-08 23:52:50][INFO] START: Fetch basic information about resellers, clients and domains data from source servers
[2026-02-08 23:52:50][INFO] Using the existing shallow dump for 'source'
[2026-02-08 23:52:50][INFO] FINISH: Fetch basic information about resellers, clients and domains data from source servers
[2026-02-08 23:52:50][INFO] START: Read migration list
[2026-02-08 23:52:50][INFO] FINISH: Read migration list
[2026-02-08 23:52:50][INFO] Read IP mapping file
[2026-02-08 23:52:50][INFO] START: Fetch information from source panel
[2026-02-08 23:52:50][INFO] START: Fetch configuration data from Plesk servers
[2026-02-08 23:52:50][INFO] Deploy migration agent to '***
[2026-02-08 23:52:54][INFO] Create source dump.
[2026-02-08 23:52:54][INFO] Creating hosting description
[2026-02-08 23:53:37][INFO] Converting hosting description to local configuration dump '/usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/plesk.backup.source.downloaded.hosting-description.tar'
[2026-02-08 23:53:41][INFO] Creating remote configuration dump on the target server '/usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/plesk.backup.source.downloaded.dump.tar'
[2026-02-08 23:54:16][INFO] Merging local and remote configuration dumps in '/usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/plesk.backup.source.downloaded.merged.tar'
 
Hi, @Matt M . Please execute the following command on the destination server:

Code:
tail -fn0 /usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/debug.log |grep "|MIGRATOR"
 
This command produced no output for me. I ran the following in case this would shed some light:
Code:
# tail /usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/debug.log -n 25
=|2026-02-10_17:01:52,592|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|exit code: 0
+|2026-02-10_17:01:52,592|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|Execute command on the source server 'source' (166.78.198.180): /usr/local/psa/bin/pleskbackup --domains-name --configuration --output-file /root/plesk_migrator/plesk_migrator-5fr0y8ybpexpjbxhwrisrfaui4yaz6ib/backup.tar -v --polling-interval 5 --from-file /root/plesk_migrator/plesk_migrator-5fr0y8ybpexpjbxhwrisrfaui4yaz6ib/from.file -exclude-extensions
+|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|Command execution results:
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|stdout:
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|stderr:
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|-------------- Start print backup log here --------------
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|<?xml version="1.0"?>
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|<execution-result log-location="/usr/local/psa/PMM/sessions/2026-02-10-160156.566/migration.result" local-dump-created="true" export-dump-created="true" local-dump-name="domains/abc-knitting-patterns.com/backup_info_2602101601.xml" export-dump-name="backup.tar" custom-log-file="/var/log/plesk/PMM/backup-2026-02-10-16-01-56-558/backup.log" status="success"/>
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|-------------- End print backup log here --------------
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|You can view additional information in the log file located in /usr/local/psa/PMM/sessions/2026-02-10-160156.566 directory. This directory will be removed automatically after 30 days.
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|The backup finished successfully
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|
=|2026-02-10_17:02:18,901|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|exit code: 0
+|2026-02-10_17:02:18,902|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|Execute command on the local server: rsync -l --chmod=Fug=rw,Dug=rwx,o= --timeout=30 -e 'ssh -i /root/.ssh/id_ed25519 -p 22 -o PasswordAuthentication=no -o StrictHostKeyChecking=no -o GSSAPIAuthentication=no' root@166.78.198.180:/root/plesk_migrator/plesk_migrator-5fr0y8ybpexpjbxhwrisrfaui4yaz6ib/backup.tar /usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/plesk.backup.source.downloaded.dump.tar
+|2026-02-10_17:02:20,032|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|Command execution results:
=|2026-02-10_17:02:20,032|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|stdout:
=|2026-02-10_17:02:20,032|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|stderr:
=|2026-02-10_17:02:20,032|D|MT|core.runners.base||[/'/s/o/u/r/c/e/'/]|exit code: 0
+|2026-02-10_17:02:20,033|I|MT|plesk.source.plesk.pmm_agent.hosting_description||[/'/s/o/u/r/c/e/'/]|Merging local and remote configuration dumps in '/usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/plesk.backup.source.downloaded.merged.tar'
+|2026-02-10_17:02:20,034|D|MT|plesk.source.plesk.hosting_description.converter||[/'/s/o/u/r/c/e/'/]|Load schema from '/usr/local/psa/PMM/plesk.xsd'
+|2026-02-10_17:02:20,037|D|MT|plesk.source.plesk.hosting_description.converter||[/'/s/o/u/r/c/e/'/]|Load schema from '/usr/local/psa/PMM/pmm-common.xsd'

Code:
# cat /usr/local/psa/var/modules/panel-migrator/sessions/20260129234720/debug.log |grep "|MIGRATOR"
+|2026-02-10_16:59:53,720|D|MT|core.workflow.runner.base|||MIGRATOR START: /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator generate-migration-list
+|2026-02-10_17:00:05,741|D|MT|core.workflow.runner.base|||MIGRATOR END: /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator generate-migration-list
+|2026-02-10_17:01:02,765|D|MT|core.workflow.runner.base|||MIGRATOR START: /usr/local/psa/admin/sbin/modules/panel-migrator/plesk-migrator check
 
Thank you, @Matt M . Based on the entries it doesn't look like the migrator is stuck on the pre-migration check. It looks like some of the stages are already completed Please allow it some additional time. You can occasionally check the debug log. Other than that, you can double-check if the task is still running on the source server:

Code:
ps auxf | grep back

or

Code:
ps aux | grep migrator
 
How much additional time should I allow it? It's now confirmed that the time it takes has nothing to do with disk usage. I migrated the 180GB subscription I had in <30min. Meanwhile, every time I try to migrate one of these 4 subscriptions that get stuck like this, the migrator hangs indefinitely, even overnight. The smallest of these 4 subscriptions is only 1 GB.
 
Have you checked if the processes still run on the source server? The migration doesn't depend on the size only. As mentioned, it also depends on the connection speed and server performance. If one of the servers is overloaded during the process it is normal for the process to take longer. I would also advise to check the CPU consumption on the source server.
 
All of these subscriptions are coming from the same source server, so if the 150GB subscription transferred in <30 min, I would expect these others to also transfer very quickly. Plus, as I have pointed out above the process freezes during the pre-migration check at the "Merging local and remote configuration dumps" step.

I did not have time to try and run this migration again today, but I will do it over the weekend and report back here.
 
Well, I have tried it again after making the last post. Still the same result.

1. What processes should I be looking for on the source server? I have checked for anything named "migrat", but this is all I see:
Code:
# ps aux | grep migrat
root         7  0.0  0.0      0     0 ?        S     2024  10:45 [migration/0]
root        13  0.0  0.0      0     0 ?        S     2024  10:37 [migration/1]
root        18  0.0  0.0      0     0 ?        S     2024  10:46 [migration/2]
root        23  0.0  0.0      0     0 ?        S     2024  10:45 [migration/3]
root        28  0.0  0.0      0     0 ?        S     2024  10:46 [migration/4]
root        33  0.0  0.0      0     0 ?        S     2024  10:30 [migration/5]
root        38  0.0  0.0      0     0 ?        S     2024  10:41 [migration/6]
root        43  0.0  0.0      0     0 ?        S     2024  10:37 [migration/7]
root        48  0.0  0.0      0     0 ?        S     2024  14:52 [migration/8]
root        53  0.0  0.0      0     0 ?        S     2024  14:50 [migration/9]
root        58  0.0  0.0      0     0 ?        S     2024  14:54 [migration/10]
root        63  0.0  0.0      0     0 ?        S     2024  14:50 [migration/11]
root        68  0.0  0.0      0     0 ?        S     2024  14:48 [migration/12]
root        73  0.0  0.0      0     0 ?        S     2024  14:49 [migration/13]
root        78  0.0  0.0      0     0 ?        S     2024  14:55 [migration/14]
root        83  0.0  0.0      0     0 ?        S     2024  14:42 [migration/15]
root     15753  0.0  0.0 112788   972 pts/0    S+   00:39   0:00 grep --color=auto migrat

2. CPU usage on source server is about 15-20%. Load average of 3-4, which is quite low given it's a 16 core server.

Any further things I can look into?
 
Ok, I have figured out what I think was causing this issue. Posting here for anyone who runs into this in the future.

1. This is important: whatever command is used by Plesk under the hood to ssh into the source server does not appear to send keep-alive requests. I think this is a bug that Plesk developers should fix. However, it is easily worked around by having sshd on source server send keep-alive requests to clients.

2. The subscriptions in questions had directories with large numbers of files (we're talking like 500,000+ files per single directory). I believe this is what was causing so much havoc to Plesk's migrator. The other subscriptions that I migrated successfully, while bigger overall, had no such large directories. I ended up deleting these files, as they were unused.

At this point, I have migrated 2/4 subscriptions. It is still slower than the other subscriptions I migrated, but at least it is working! I'm hoping the rest of this goes smoothly.
 
Back
Top