Of course, it was not to be: between the virus scanner complaining that some of the Linux scripts I had checked out were viruses, and Explorer not liking the length of some of the paths, I gave up on doing it the obvious way.
Instead, I fell back to good old xcopy. After a bit of googling, here's the command line I ended up with:
C:\>xcopy G:\builds E:\builds /E /C /Q /H /R /K /X /Y
957918 File(s) copied
I don't know whether all these flags are necessary, but they did seem to work! The intention is to copy as many attributes of the original files as possible.
If the directory doesn't exist, xcopy will ask whether you wanted to create a file or a directory. I imagine if you say "file" it won't work too well.
C:\>xcopy G:\Data E:\Data.old /E /C /Q /H /R /K /X /Y
Does E:\Data.old specify a file name
or directory name on the target
(F = file, D = directory)? d
1702 File(s) copied