Manual Migration via SSH
If our Automated Migration Tool is slow or not working or you have a large website with lot of files and large database, your best bet is to transfer the website using SSH method.
Pre-requisites:
Make sure you have SSH login details of both source and destination websites.
This guide also assumes that you have a blank WordPress site at the destination website.
We need following commands to be working at the source website's server:
- wp (WP-CLI client)
- scp (to transfer files)
- tar and zip commands (for compression)
- mysqldump (used by WP CLI to dump database)
All of the above are standard linux utilities.
Login via SSH to the source website:
Lets backup the entire WordPress folder, excluding the wp-config.php file. This has been done to avoid any wp-config.php related issues in the destination website.
Note: This command assumes that you are in the WordPress folder.
Then export the database and zip (or tar) the files.
It is time to transfer these files & db backup to the destination website's server.
Replace the <dest_ssh_user> (including the angle brackets) with the destination's SSH username and <dest_ssh_host> with destination's SSH host (IP or Hostname).
If you have a SSH key based authentication, it will simply work, but you may have to generate a key pair and copy them in the source server
OR, if you have SSH password baed authentication, just enter the password.
Cleanup
Login to the SSH via terminal and verify that the files are indeed arrived in /tmp folder
Extract the files and db files.
Import database
Verify the files were extracted successfully
If you are changing domain during migration, say from source.com to dest.com, then run the following command, otherwise it is not required:
Replace OLD_DOMAIN and NEW_DOMAIN properly in these commands.
Flush caches
Cleanup
Pre-requisites:
Make sure you have SSH login details of both source and destination websites.
This guide also assumes that you have a blank WordPress site at the destination website.
At The Source
We need following commands to be working at the source website's server:
- wp (WP-CLI client)
- scp (to transfer files)
- tar and zip commands (for compression)
- mysqldump (used by WP CLI to dump database)
All of the above are standard linux utilities.
Login via SSH to the source website:
ssh user@source.com
Lets backup the entire WordPress folder, excluding the wp-config.php file. This has been done to avoid any wp-config.php related issues in the destination website.
Note: This command assumes that you are in the WordPress folder.
# Change to the root of your WordPress folder
cd public_html
tar --exclude='wp-config.php' -czf wordpress_files.tar.gz -C "$(pwd)" .
Then export the database and zip (or tar) the files.
# Export DB
wp db export wordpress_db_backup.sql
# Tar (zip) the db .sql file
zip wordpress_db_backup.zip wordpress_db_backup.sql
rm wordpress_db_backup.sql
It is time to transfer these files & db backup to the destination website's server.
Replace the <dest_ssh_user> (including the angle brackets) with the destination's SSH username and <dest_ssh_host> with destination's SSH host (IP or Hostname).
If you have a SSH key based authentication, it will simply work, but you may have to generate a key pair and copy them in the source server
OR, if you have SSH password baed authentication, just enter the password.
scp wordpress_db_backup.zip wordpress_files.tar.gz <dest_user>@<dest_ssh_host>:/tmp/
Cleanup
rm wordpress_db_backup.zip wordpress_files.tar.gz
At The Destination
Login to the SSH via terminal and verify that the files are indeed arrived in /tmp folder
ssh user@dest.com
cd public_html
ls /tmp
Extract the files and db files.
tar -xzf /tmp/wordpress_files.tar.gz -C "$(pwd)"
unzip -o /tmp/wordpress_db_backup.zip -d /tmp/
Import database
wp db import /tmp/wordpress_db_backup.sql
Verify the files were extracted successfully
wp core verify-checksums
wp cli cache clear
If you are changing domain during migration, say from source.com to dest.com, then run the following command, otherwise it is not required:
Replace OLD_DOMAIN and NEW_DOMAIN properly in these commands.
wp search-replace "OLD_DOMAIN" "NEW_DOMAIN" --all-tables
wp option update home "https://NEW_DOMAIN"
wp option update siteurl "https://NEW_DOMAIN"
Flush caches
wp cache flush
wp rewrite flush
Cleanup
rm /tmp/wordpress_db_backup.zip /tmp/wordpress_db_backup.sql /tmp/wordpress_files.tar.gz
Updated on: 27/06/2024
Thank you!