The best practice would certainly be to do it one by one. How you identify which files need to be brought across would be determined by how you got the files.
Third Party / Commercial Non Downloader Modules
Return to the website(s) of the original download you may use this as an opportunity to upgrade as well to the latest versions of the modules. They should come with the full collection of files required and simply put them as they should be according to the developers instructions for installation.
Magento Connect Downloads
These would normally be archived in the cache of the downloader and would be best to be downloaded again directly from there. If that isnt possible then your best hope would be to extract the archive and put them into the correct places manually.
This of course assumes that no modules have had any customisations done to them. If they have, you need to determine why they were - ie was it a bug fix, and if so is it fixed in newer versions of the module or was it fixed in the upgrade of the core. If its a customisation for bespoke business requirements then you would need to either re do those changes to modules, or better yet extend upon the module so that in future updates the changes are in tact.
Otherwise replication of the modified files from the install instructions.
Finally, if the original download is not availible in any source but you need to keep the module for any reason, you would need to review where files are manually. Some common places you should think of looking are:
- /js /skin/adminhtml (if theres backend functions)
- /app/design/adminhtml (if backend functions)