I'll suggest a few ideas, but Ken has done more of these kinds of things than I. (Ken knows that I host
my Moodle on a GoDaddy VPS). I did just migrate my Moodle in January (this year) from one GoDaddy VPS to another. My Moodle is not as large as yours. My Moodle database
is 2.5GB, and my moodledata folder is 10GB. I too wanted to minimize downtime.
I practiced everything a few times before doing the final migration. On my GoDaddy VPS, I was able to "reprovision" my server
to bring it back to its starting condition. Practice-reprovision-practice-reprovision... do this around 12 times and success is possible. Document everything along the way.
In my own case, I like installing the new Moodle from scratch, just to prove that new my server can run Moodle. Remember, you have to make sure that your database version is correctly picked, and that you have the correct PHP extensions enabled. There are some things that you must do on your server and are not in Moodle, and are not in public_html. On my new server, I make sure that I have the same folder structures, meaning the same name for the moodledata folder, and the same name for the database.
After I have a new Moodle running on my new server, I backup my old moodledata folder (.tgz), move it to the new server, and restore. I do this with an ftp
connecting from server to server. I don't download
the tar file to my local computer (but I could, its just faster doing this from server to server.) Likewise, I dump the database, move it to the new server, and restore it. Then I test my moodle to see that things works.
I should mention that with my technique, I do have to reinstall my 9 Moodle plugins
to the new Moodle. And I should also mention that my Moodle is in public_html/moodle. Yours might be simply in public_html.
I guess one could tar the entire public_html folder, move it, and untar it. It might depend on how you have your moodle set up. The Moodle application is not that big, under 300MB. By moving your entire public_html folder, you wouldn't have to worry about installing plugins, they should be there. But you might need to worry about your config.php file, I am not sure because I don't know exactly how you have your Moodle set up.
You made me wonder if using rsync might work. I have never tried this technique, but rsync can be used to move only "changed" files. The first time using rsync, it could move everything. From that point forward, it would move only changed folders. rsync would be used for your moodledata folder and your public_html folder. You still need to dump and restore the database, I think. Ken might have experience with using rsync for migration. Again, be careful with config.php.
I hope that some of what I said makes sense. Ken, and others, will provide additional thoughts.
For your migration, the more each system matches the other, the better off you will be. Practice can "make perfect." In my case, I was moving from an outdated CentOS to a newer CentOS.