Geralmente quando se copia uma pasta usando o PHP, não é possível copiar seus subdiretórios, mas sim apenas o arquivos que estão diretamente dentro dela. Essa função mostra como copiar tudo que estiver dentro de uma pasta.

/*
* Copiar todos os arquivos e subdiretórios dentro de um diretório
*
* @Autor: Aidan Lister <aidan ARROBA php.net>
* @Tradução: Tiago Passos <voxtiago ARROBA gmail.com>
* @versão 1.0.1
* @parâmetro de origem: $source
* @parâmetro de destino: $dest
* @retorna TRUE se houver sucesso e FALSE se houver erro
* @Exemplo de uso: copyr("site","backup_site");
*/

function copyr($source, $dest)
{
   // COPIA UM ARQUIVO
   if (is_file($source)) {
      return copy($source, $dest);
   }

   // CRIA O DIRETÓRIO DE DESTINO
   if (!is_dir($dest)) {
      mkdir($dest);
      echo "DIRET&Oacute;RIO $dest CRIADO<br />";
   }

   // FAZ LOOP DENTRO DA PASTA
   $dir = dir($source);
   while (false !== $entry = $dir->read()) {
      // PULA "." e ".."
      if ($entry == '.' || $entry == '..') {
         continue;
      }

      // COPIA TUDO DENTRO DOS DIRETÓRIOS
      if ($dest !== "$source/$entry") {
         copyr("$source/$entry", "$dest/$entry");
         echo "COPIANDO $entry de $source para $dest <br />";
      }
   }

   $dir->close();
   return true;

}
Geralmente quando se copia uma pasta usando o PHP, não é possível copiar seus subdiretórios, mas sim apenas o arquivos que estão diretamente dentro dela. Essa função mostra como copiar tudo que estiver dentro de uma pasta.