Quick answer: Migrating many sites is a pipeline, not a series of one-offs: inventory everything first, prepare the target server(s), then loop a scripted migrate–test–cutover process per site, staggering DNS switches. For agency-scale moves, Cloud2Y also offers bulk migration — one ticket for the whole fleet.
Overview
The single-site process (guide) scales linearly — unless you script it. The pieces worth automating: the file sync, the DB dump/import and the URL checks. The pieces worth not rushing: DNS cutovers (stagger them so problems surface one site at a time) and post-migration validation.
Before you start
- A spreadsheet inventory: domain, size, DB size, PHP version needs, special plugins, email hosting, DNS registrar/TTL.
- Target servers provisioned and hardened (see agency practices).
- DNS TTLs lowered to 300 s for every domain, a day ahead.
Step-by-step guide
- Prioritize: start with the smallest low-risk site to validate the pipeline; save WooCommerce and high-traffic sites for last (see WooCommerce notes about freezing orders during cutover).
- Script the per-site move (old host → new VPS):
#!/bin/bash # migrate-site.sh domain olduser@oldhost /old/path dbname set -e DOMAIN=$1; SRC=$2; SRCPATH=$3; DB=$4 rsync -az --exclude='wp-content/cache' $SRC:$SRCPATH/ /var/www/$DOMAIN/ ssh $SRC "mysqldump $DB | gzip" | gunzip | mariadb ${DB} sudo chown -R www-data:www-data /var/www/$DOMAIN - Test each site pre-DNS via hosts-file override: front page, login, forms, one deep URL.
- Cut over in waves: 3–5 sites per day beats 30 at once; keep the old hosting alive until the last wave completes + a few days.
- Final sync for changing sites: re-run rsync + a fresh DB dump immediately before each site’s DNS switch, so no content is lost in the gap.
- Post-migration pass per site: SSL issued, permalinks working, mail sending, backup job covering the newcomer.
Common issues
- Content edited after the copy: the final-sync step exists precisely for this — skip it and lose comments/orders.
- All DNS switched at once: support tickets from every client simultaneously — waves keep failures debuggable.
- Email forgotten: sites move, MX records don’t — audit email hosting per domain in the inventory phase.
When to contact support
For fleet-scale moves, open a ticket describing the site list — bulk migration for agencies can take the mechanical work off your plate entirely.
Frequently asked questions
In what order should I migrate a fleet of sites?
Smallest and least critical first to prove the pipeline, then in waves of 3-5 per day, finishing with e-commerce and high-traffic sites once the process is rehearsed.
How do I avoid losing content created during migration?
Run a final rsync and fresh database dump immediately before each site's DNS switch — the gap between copy and cutover is where comments and orders vanish.
Can Cloud2Y migrate all my client sites for me?
Yes — bulk migration for agencies is handled via a support ticket: provide the inventory and access details, and the team plans waves and moves the sites.
Related articles
- Bulk migration for agencies
- How to migrate WordPress to Cloud2Y VPS
- WordPress hosting for agencies: best practices
- How to host multiple WordPress sites on one VPS
Ready to get started? Order a WordPress VPS at Cloud2Y →
