Skip to content

Migrating 12 client sites without cPanel backup access

Web Hosting by svendeal 19 replies 3.4K views
6 #1

Mini-guide since I just DID THIS LIVE. Host was Hetzner, "maintenance window" 6 hours, no cPanel backup access because €4/mo plan lol. SNAPPED IT UP last Black Friday, you know how it is

12 client WP sites, all small business, cannot go down. My move:

  • WP-CLI export on each site while still live
  • rsync wp-content to new box (OVHcloud €6/mo, I know, I know, but clean IP and actual uptime)
  • Mysqldump via SSH tunnel, pipe direct to new MariaDB
  • Search-replace URLs before DNS flip
  • Cloudflare proxy = zero TTL drama, instant cutover

Total downtime: literally zero. Did it ALL during their maintenance window. Why? Because I didn't trust them to come back online. History suggested otherwise

Database trick for big tables: --single-transaction flag. Saved me on a 2GB WooCommerce mess.

Anyone got better rsync flags? My wp-uploads took forever.

world record: 4min Arch install
#2

Nice work Sven! I did similar migration last month, no cPanel too. For rsync I always use -azP, the P shows progress and can resume if connection drop. Very useful for big wp-content!

For database, I learned hard way: check charset before import! Made test order on new host first, import failed because utf8mb4 mismatch. Took me 2 hours to fix. Now I always run SHOW VARIABLES LIKE 'character_set%' before dump.

Also if you have dynamic content, use wp db export with --add-drop-table. Cleanest import I found.

Cheers

swimming upstream since 2019 🐟
#3

Guys this is gold for my side hustle. 12 sites on €4/mo plan? What panel you using on OVHcloud, any leads? I got 20 clients now on mixed hosts, thinking to consolidate for better margins.

Recieved quote from InterServer for reseller but thier cheapest is $9/mo. Need something with WHMCS integration or similar.

Your zero downtime trick with Cloudflare is smart. I usually schedule Sunday 2AM and pray.

your margin is my opportunity
7 #4

Brother sven, you very brave. Hetzner maintenance window sometimes become permanent window dong. I already lose 2 sites there last year. Can or not you share the WP-CLI command you use? I want to try but scared break something. My clients all small business also, cannot afford downtime.

The --single-transaction tip I not know before. Good good!

#5

What's the MariaDB version on OVHcloud, 10.6 or 11?

8 #6

@frank59 10.6 on that plan. They have 11 in public cloud but I went dedicated VPS so 10.6 it is. No issues with WP 6.4, all plugins clean.

@MeritBudi here is the full command I run:

wp db export --add-drop-table --single-transaction - | ssh newbox "cat > /var/backups/site.sql"

Then on new box:

wp db import /var/backups/site.sql && wp search-replace 'oldurl' 'newurl'

Brave? Maybe. But I watched Hetzner status page for 3 hours after "maintenance done" email and sites still 502. Better to move than pray.

world record: 4min Arch install
#7

10.6 is fine, just watch out for the default sql_mode in newer point releases. I had STRICT_TRANS_TABLES break a legacy plugin once.

3 #8

Thank you brother sven! I will try this weekend on one test site first. My Hetzner box in Falkenstein, now I scared also. Better move before maintenance eat my sites.

The ssh pipe is clever, no need save big sql file on old server. I learn something today.

#9

Following this closely. OVHcloud €6 plan is VPS or shared? I check their site, so many tiers. Need something with root access for WP-CLI.

InterServer still in my list but USD billing kills me with conversion fees.

your margin is my opportunity
#10

@RAJ OVHcloud €6 is VPS Starter, 1 vCore 2GB. Root yes, but no panel. You install what you want. I have 4 clients there now, no complaints.

One thing I forgot to mention: for SSL, I use acme.sh with Cloudflare DNS API. Zero downtime includes zero certificate drama. Before DNS flip, new box already has valid cert.

swimming upstream since 2019 🐟

Post a reply

You need an account to reply. Log in or register to join the conversation.

Post reply Preview Save draft