Don't forget that with just io.Copy and os.Chmod you're not copying extended attributes and other crap (metadata / ACL) that's attached to files.
For example, there's a copyfile() function in Mac OS X's libc that copies everything:
(I think it's practically impossible to copy files exactly this without using it.)
Also, your code follows symlinks instead of copying them as is.
Just a reminder, not a critique.
-Dmitry