Move a WordPress site as two coordinated backups: the web files and the MySQL or MariaDB database. Copy the files with an SSH-based transfer—preferably rsync—restore the database on the Ubuntu VPS, align wp-config.php with the new credentials, then test the site privately before changing DNS. If the domain changes, run a dry-run, serialization-aware WP-CLI replacement before applying new URLs.
Antihost offers managed WordPress hosting with free migration, one-click staging and a 14-day free trial.
What a complete WordPress migration contains
A restorable WordPress backup has two independent parts: the files and the database. WordPress.org’s Advanced Administration Handbook describes these as the two parts of a backup. The files include WordPress core, themes, plugins, uploads, wp-config.php, and, where used, .htaccess. The database contains posts, pages, users, settings, comments, plugin data, menus, and other site state.
As an Amazon Associate I earn from qualifying purchases.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Copying only the document root can produce a directory that looks complete while leaving the site without its content and configuration. Conversely, importing only the SQL dump cannot restore themes, plugins, media, or core files. Treat the file transfer and database export as one migration set, and label both with the same backup time.
Same domain or changed domain?
| Scenario | URL work required | Main checks |
|---|---|---|
| Domain and URL stay identical | Do not replace URLs. Preserve the existing home and siteurl values. |
Server block or virtual host, document root, HTTPS behavior, permalinks, uploads, and database credentials. |
| Domain, scheme, or host changes | Run WP-CLI search-replace with --dry-run, review the report, then apply it. |
Exact old and new schemes and hosts, redirects, media links, serialized settings, and every site in a multisite network. |
1. Inventory the old server and preserve a rollback point
Do this while the old VPS is still working. Record the source document root, database name, database user, table prefix, PHP version, web server, enabled plugins, cron jobs, TLS certificates, and DNS records. Also save the active Nginx or Apache configuration and note the PHP-FPM handler or other PHP process used by the site. These details explain differences that otherwise appear as mysterious errors after the move.
#1 Best Overall
- [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
- [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
- [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
- [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
- [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
Keep the old VPS online until the replacement has passed testing and the DNS change has had time to propagate. WordPress server guidance recommends making a current backup before server changes and retaining the original configuration so it can be restored. A rollback point should include the SQL dump, the complete WordPress directory, the active web-server configuration, and the DNS values you can restore.
Decide when writes will stop
A busy site can change between the database export and the final DNS switch. Plan a maintenance window, enable maintenance mode, or otherwise pause publishing, comments, orders, forms, and other writes for the backup that will become authoritative. If you cannot pause writes for the initial copy, use a final pause-and-sync sequence immediately before cutover; the first copy is then only a baseline.
2. Make a consistent source backup
Export the database
From the source VPS, export the database named in wp-config.php:
mysqldump -u DB_USER -p DB_NAME > wordpress.sql
The command prompts for the database password and writes a logical SQL dump to wordpress.sql. Ubuntu’s MySQL documentation uses this form for a dump and documents restoring it through the mysql client. Keep the dump protected: it contains site content and, depending on the data, personal information. Do not put it in a publicly served document root.
After exporting, check that the file exists and has a plausible size for the site. A zero-byte or unexpectedly tiny dump is a backup failure, not a migration shortcut. Keep the database name, user, password, host value, and table prefix written down for the destination configuration.
Capture all required files
Include the entire WordPress document root, especially wp-content, the uploads directory, themes, plugins, core files, wp-config.php, and .htaccess when Apache uses it. A file archive or an rsync copy is not a substitute for the SQL export. Protect wp-config.php because it contains database credentials.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsIf the site is receiving uploads while you copy it, the file set and database may describe different moments. That is why the final maintenance pause needs both a last database dump and a last file synchronization.
Rank #2
- 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
- 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
- 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
- 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
- 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
3. Prepare the new Ubuntu VPS
Install and configure the web stack required by the site: a supported PHP version and extensions, MySQL or MariaDB, and either Nginx or Apache with its PHP handler. Match the old PHP version first when possible, then plan upgrades separately. Differences in PHP extensions or handlers can make a previously working plugin fail even when the files and database are correct.
Create the database and account
Create the destination database and a database user with a password you intend to place in wp-config.php. Grant that user access to the destination database. WordPress migration guidance notes that a new host may require recreating the database user and its matching password; the database name, user, password, host, and privileges must agree with the imported data.
Create the document root and web configuration
Create a destination directory such as /var/www/example.com. Configure the Nginx server block or Apache virtual host to point to that directory and connect PHP requests to the correct PHP-FPM handler. Keep a copy of the active configuration before editing it. Do not switch public DNS yet; the server can be tested privately while the old VPS remains available.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →4. Transfer WordPress files over SSH
Why rsync is the practical default
Ubuntu’s rsync guidance calls rsync over SSH the simplest network backup method. It is repeatable, supports a dry run, and can transfer only differences on later passes. Archive mode preserves recursive files, links, timestamps, permissions, ownership, groups, and devices as permitted by the accounts and filesystem. Compression reduces transfer volume, and SSH supplies the authenticated transport.
Run this preview from the source VPS, adjusting paths and the destination account:
rsync -azvn --delete -e ssh /var/www/example.com/ deploy@NEW_VPS:/var/www/example.com/
-aenables archive mode and its recursive attribute-preservation behavior.-zcompresses data during transfer.-vdisplays the files being considered.-nis the dry-run flag; no changes are made at the destination.--deleteremoves destination files that are absent from the source, so verify both paths before proceeding.-e sshselects SSH as rsync’s remote-shell transport.
Review the dry-run list. Pay particular attention to the trailing slash on the source path and to the destination directory: a path mistake combined with --delete can remove the wrong files. Check that uploads, plugins, themes, and wp-config.php are included.
When the preview is correct, repeat without -n:
rsync -az --delete -e ssh /var/www/example.com/ deploy@NEW_VPS:/var/www/example.com/
Rsync and scp compared
| Capability | rsync over SSH | scp over SSH |
|---|---|---|
| Dry run | Yes, with -n; review the proposed changes first. |
Not provided as a file-list simulation. |
| Repeatability | Designed for repeated synchronization and audit-friendly previews. | Copies the selected files or archive again. |
| Later transfers | Transfers differences, which is useful for a large site and final sync. | Generally retransfers the selected object. |
| Attributes | Archive mode requests preservation of recursive files, links, timestamps, permissions, ownership, groups, and devices. | Does not provide rsync archive-mode synchronization behavior. |
| Best use here | Initial copy, repeated passes, and the final pre-cutover synchronization. | A simple authenticated copy of an archive or SQL file when rsync is unavailable. |
Use scp for a dump or archive when necessary
If rsync is unavailable, create an archive or copy the SQL dump with authenticated scp. For example:
Rank #3
- [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
- [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
- [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
- [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
- [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
scp wordpress.sql deploy@NEW_VPS:/tmp/
Ubuntu’s OpenSSH documentation describes file transfer after authentication. Confirm the destination path and remove the temporary dump after a successful, protected import.
5. Import the database on Ubuntu
Copy the SQL dump to a private location such as /tmp/ on the new VPS, or transfer it directly through your chosen SSH workflow. Ensure the destination database and user already exist and that the user has privileges on that database.
Restore the dump with:
mysql -u DB_USER -p DB_NAME < /tmp/wordpress.sql
This is the Ubuntu-documented restore pattern: the mysql client reads the SQL file through standard input. Use the same database name represented by DB_NAME, and enter the password for the destination account. A successful command returning to the shell is not a substitute for verification; inspect the database and confirm that the expected WordPress tables were imported.
Check the table prefix
Open the restored wp-config.php and compare $table_prefix with the prefixes of the imported tables. A mismatch can make WordPress behave as though the database is empty even when the SQL import completed. The database name, user, host, password, and prefix in the configuration must correspond to the restored database.
Recommended Free Tools
6. Update wp-config.php, ownership, and permissions
Edit the destination wp-config.php so its database name, user, password, host, and table prefix match the account and tables on the new VPS. If the database server is not on the same host, use the correct database host value rather than assuming the local default.
Set ownership and permissions so the account running the web server or PHP process can read the application and write only where WordPress requires it, such as uploads or update directories. The exact user and group vary by Nginx, Apache, PHP-FPM, distribution, and hosting setup. Inspect the active service configuration instead of applying a universal ownership command copied from another server.
- Confirm that PHP can read
wp-config.phpwithout making it broadly writable. - Confirm that the uploads directory exists and is writable by the correct process account.
- Keep plugin, theme, and core directories protected from unnecessary writes.
- Check that the document root configured by the web server is the directory you synchronized.
7. Change URLs safely when the domain changes
When the domain remains the same
Keep the existing home and siteurl values when the public domain and URL scheme remain unchanged. Concentrate on server configuration, HTTPS redirects, DNS, and database connectivity. Do not run a replacement merely because the site moved to a different VPS.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #4
- Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
- Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
- All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
- Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
- Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
When the domain or scheme changes
Run WP-CLI from the restored WordPress directory. First preview the replacement:
wp search-replace 'https://old.example' 'https://new.example' --dry-run
Review the tables and counts reported. If the old and new values are correct, apply the replacement:
wp search-replace 'https://old.example' 'https://new.example'
WP-CLI searches registered tables and intelligently handles PHP serialized data. That matters because a naïve whole-database text replacement can change string lengths inside serialized values and break settings, widgets, or plugin data. Use the exact scheme and host, including whether the site uses http or https and whether a www host is involved.
Multisite considerations
For a multisite installation, use WP-CLI’s documented --network and --url options as appropriate, and test every site in the network. A replacement that works for the main site does not prove that subsites, mapped domains, media, or administrative URLs are correct.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
8. Test the new VPS before DNS cutover
Use a temporary hosts-file entry or another private test route that sends your workstation to the new VPS while public DNS still points to the old server. Test as an administrator and as an ordinary visitor.
- Open the home page and several representative posts or pages.
- Log in to
wp-adminand confirm that users, settings, plugins, and themes load. - Open old and newly uploaded media, including files in
wp-content/uploads. - Submit forms and check any workflow that writes to the database.
- Visit clean and nested permalinks, run search, and verify rewrite rules.
- Check HTTPS redirects, certificate coverage, mixed-content behavior, and canonical URLs.
- Run scheduled tasks and inspect plugin and theme behavior.
- Watch Nginx or Apache logs and PHP-FPM logs while exercising the site.
If testing creates new content or changes settings, take another database dump before the final cutover. Otherwise those test writes can be overwritten by the final import.
9. Perform the final synchronization and DNS switch
- Announce or enable the maintenance window and pause writes on the old site.
- Run one final database export using
mysqldump. - Run the final rsync pass. Use a dry run first if the file list has changed materially, then repeat without
-n. - Transfer and import the final SQL dump on the new VPS.
- Recheck
wp-config.php, table prefixes, ownership, permissions, and the private test URL. - Switch DNS to the new VPS only after the destination serves the tested site.
- Keep the old VPS available while DNS caches expire. Monitor access logs, PHP errors, forms, logins, and scheduled tasks on the new server.
The final database export and file synchronization must happen while writes are paused; otherwise visitors can reach either server with different data during propagation. Do not delete the old VPS until the new site is stable and your rollback material is safely stored.
Best Value
Maintenance window versus live cutover
| Approach | Downtime | Data risk | Operational pattern |
|---|---|---|---|
| Maintenance-window migration | Planned pause while the final dump and sync run. | Lowest risk of missing writes because the source is frozen. | Use maintenance mode or another write freeze, complete the final import, then change DNS. |
| Live initial copy with final pause | Short pause at the end rather than during the initial transfer. | Requires a disciplined final dump and rsync; writes made after the first copy must be included in the final pass. | Copy a baseline while live, test privately, pause writes, export and sync again, then cut over. |
Common migration failures and fixes
Error establishing a database connection
This usually means one of the database name, user, password, host, server availability, or privileges in wp-config.php does not match the restored database. Recheck the destination account, verify that the database server is running and reachable, confirm the import used the intended database, and ensure the configured user has access.
Redirects to the old domain
Stale home or siteurl values, or other stored URLs, can send visitors back to the old host. Confirm the exact old and new schemes and hosts, run WP-CLI search-replace with --dry-run, review the affected tables, and apply it only after the preview is correct. Check server-level redirects as well.
Broken images or permalinks
Verify that the complete wp-content/uploads tree was transferred, that the web-server document root points to the synchronized directory, and that Nginx or Apache rewrite and server-block settings match the site. Incorrect ownership or missing files can produce the same symptom.
WordPress asks for FTP credentials
The PHP process commonly cannot write to the directories needed for uploads or updates. Identify the active PHP-FPM or web-server user, correct ownership, and grant narrowly scoped write permissions. Avoid making the entire application writable simply to suppress the prompt.
The site has files but no posts, users, or settings
A file-only migration cannot restore database-backed content. Import the SQL dump, verify the destination database credentials, and check that the table prefix in wp-config.php matches the imported tables.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchChanges disappear after cutover
This indicates that writes occurred on the old site after the database export or that the final dump was not imported. Re-enable the maintenance pause, take a new final dump, import it, and verify the destination before reopening the site.
Rollback if the new VPS fails
If the destination produces database errors, broken application behavior, or server failures that cannot be corrected quickly, point DNS back to the old VPS using the preserved records. Keep the old site’s configuration and database snapshot unchanged while investigating. Correct the new server privately, repeat the final synchronization, and schedule another cutover rather than improvising changes on a production server.
After a successful migration, retain the final SQL dump, the synchronized file backup, and copies of the working Nginx or Apache and PHP configuration. These are the materials that let you recover from a failed update or a later server incident, not just from this move.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

