Hi,
I'm working on the same thing, having a composite dataset with many files in many sub-folders.
Well during the development & testing of the tool that uses this composite datatype, I found out that Galaxy does not handle correctly sub-dirs, it works pretty good with files but if it finds a sub-dir then the copy messes it up.
To be more specific it uses shutil.copy without checking if it is file or directory, when coping dirs it has to use shutil.copytree.
I managed to make our local Galaxy installation to handle them quite ok with some modifications in method DiskObjectStor.update_from_file(...) located in lib/galaxy/objectstore/__init__.py
I can send you a copy of the file I've modified.
Regards, Christos
galaxy-dev@lists.galaxyproject.org