Migrating 47 cPanel sites without paying JetBackup tax So my host decided jetbackup is now $3/mo per account 47 sites = $141/mo for something rsync does free anyway I wrote this over the weekend First I dumped all users via whmapi1 listaccts | jq -r '.data.acct[].user' then for each one I rsync -avz --exclude=mail/ /home/$user/ to the new box mail I did separately with imapsync because some of these people have 20gb inboxes from 2019 Databases were the pain point whmapi1 list_mysql_databases_and_users per user mysqldump each one scp mysql on new side the api calls are the slow part 47 sites took 6 hours total The trick is doing it in two passes first pass while live second pass during maintenance window cut dns ttl to 300 beforehand Anyone else done this at scale or am I the only cheap one here
Migrating 47 cPanel sites without paying JetBackup tax
In server to backup is no problem but in cPanel everything is little script inside little script no? I use rsync to szerwer but for databases I prefer little docker container with percona xtrabackup more reliable than mysqldump for big bases no?
47 cPanel sites in 2026. .
Disk Speed:
fio test: 1.2 GB/s read, 890 MB/s write
Network: 220 Mbps to EU, 180 Mbps to AsiaDisk's fine, pipe's a joke Your rsync bottleneck is probably the 180 Mbps, not the API calls.
Their cPanel-to-cPanel transfer includes database verification and email sync also. I have migrated 12 accounts using this tool itself, zero corrupted databases. It is cheap only because they absorb the cost for yearly plans. Any leads for similar offers from other providers?
I have make this mistake one time, since 2 days I try to migrate with rsync and I break 3 databases lol now I use the Hostinger tool also, it is possible to do that in one click? I think cPanel is too much expensive now, franchement
Rsync for 47 sites? I respect the grind fr
Whmapi1 list_mysql what? Post got cut off dude
Yeah sorry hit submit too fast. Whmapi1 list_mysql_databases_and_users --user=$user
Then loop through the results. The full command is:
For db in $(whmapi1 list_mysql_databases_and_users user=$user | jq -r '.data.dbs[]?.database'); do
Mysqldump --single-transaction $db > $db.sql
Done
--single-transaction is the part I forgot first time, without it you lock tables and customers call you.
You could have used WHM's transfer tool directly, no? Even without JetBackup, cPanel-to-cPanel transfer over SSH exists. Or did your new host not give you root?