Migrating to a new server is best done at the command line. Try this from a test server, from within the website's root directory:
Code:
tar -czvf ../filename.tar.gz .
Make sure you input the period after the filename, which ensures hidden files are included. This will put the archive above the root directory, so that it won't be available to the public. If your site is a typical XF install, all of your content/addons/media should be rolled up in one large file. The actual "filename" of your archive can be whatever you wish, but keep it short.
Then move up to the directory with the archive and do a secure copy to the new server via ssh:
Code:
scp -P [port number] filename.tar.gz [username]@[host ip]:
The "port number" may be the normal SSH port, but if you've already changed it as you should then use that. The "username" and "host ip" would be whatever represents a user that can login to the new server via ssh. There are several references on scp command line examples on the web.
The only remaining step would be to export a copy of the database, and put the copy on the new server as well via secure copy.
On the new server, setup your virtual host with the same configuration parameters and put the website archive in the root directory. Then extract it as such:
Code:
tar -xvzf filename.tar.gz
When completed, ensure that your permissions are retained. In some cases the user/group ownership may match, but you may have to update them as well.
Then restore your database from the export. Delete both archives, and Test.
Do this on a test server until you're comfortable doing it with your live data. Reduce the TTL on your DNS a few days before the move, in order to minimize user impact on DNS propagation, and move it back to the normal TTL setting afterward in order to minimize page load times.