Ok, before I start, this was done on a CentOS system, so if you're not using a RH-based distro, your mileage may vary. It should still work fine, but the paths might be different. Oh yeah, and I'm not responsible if this blows up your server, defrosts your fridge or tries to have sex with your cat. That being said, here we go:
Step 1:
On the old server: /usr/local/psa/bin/pleskbackup -v clients <clientname> <backupfilename>
Step 2:
Suspend the client on the old server (this way they won't lose any data in the time it takes to move the backup file to the new server)
Step 3:
Get the backup file over to the new server. FTP, SSH, don't care.
Step 4:
Copy all the files from /usr/local/psa/admin/lib/python/*.py* to /usr/lib/python2.4/site-packages/
(yes, there's probably a better way to do it, but I'm a PHP guy, not a Python guy, and I didn't know how to make Python look at a certain directory for extra modules)
Step 5:
Run: python /usr/local/psa/admin/share/pre9_backup_convert/pre9_backup_convert.py -v convert <backupfilename>
I specify the -v flag because I like to see what the heck it's doing.
Step 6:
Once you're done with that, you'll have an XML file with a filename similar to converted_<clientname>_info_0812231938.xml. Mine was located in: <whatever_dir_you're_working_in>/<backupfilename>/clients/<clientname>ted/clients/vmartin
Step 7:
/usr/local/psa/bin/pleskrestore --create-map converted_<clientname>_info_0812231938.xml -map <clientname>-map -verbose
You can use whatever you want for the map name, it doesn't matter. I chose the same as the client's name just for simplicity's sake.
Step 8:
Edit the map file, change the IP. Chances are, your IPs are different. If you've managed to get the same worldwide-accessible IP set up correctly on 2 servers at the same time, congrats - the IETF will probably want to talk to you. But since you probably didn't do that, open the map file and change the IP to the new IP. Should be relatively simple to see where to do it. If not, post, and I'll help out.
Step 9:
/usr/local/psa/bin/pleskrestore --restore converted_<clientname>_info_0812231938.xml -map <clientname>-map -level clients -verbose
Step 10:
You're going to get a number of autoresponder errors. Maybe. If you don't, cool. If you do, ignore 'em. They happen because the restore process apparently sets the status of the autoresponders automatically without checking to see if they even exist. I haven't tested this part extensively, but I think if you see '<execution-result status="success">' in the output, then you're good to go.
That's it! Check the control panel, and make sure that your new client shows up, and you should be good to go. This can be done at the server, client, or domain level. Just run any of these commands without any flags (or maybe the --help flag) to see what other options are available to you.
Oh, and before you do this, you might want to knock the DNS TTL down really low, otherwise your clients may have to wait a while until DNS propagation takes over and point 'em at the new server.
And you're going to have to change which DNS servers that the domains point to at the registrars, or advise your customers to do it, or all your hard work will have been in vain.
Please let me know what you think about this. It's a quick and dirty hack that I cobbled together because the PMM that's included (yes, you can get to it from the CP) doesn't work.