you can recursivly read in the directory and copy them one by one, but (under unix) I would use what the OS provides.
look up:
http://www.php.net/manual/en/function.system.php
there are various functions that can send commands to the OS. regarding your problem, I would do
system("cp -a thisdir thatdir");
a one-liner, but check out the cp command help, too.
HTH!