能用shell就用shell,否则效率太差。php复制单目录代码下面给你抄一段,多目录情况就是从内到外一层一层复制。function CopySDIR($T_DIR,$Sourse){
        if(is_dir($T_DIR)){
        $handle=opendir($T_DIR);        if(!is_dir($Sourse)){mkdir($Sourse,0777);}
        
while ($file = readdir($handle)) {
                        
                        if($file=="." || $file==".."){ continue; }
                        
                        if(is_dir($T_DIR."/$file"))
                                {  
                                CopySDIR($T_DIR."/$file",$Sourse."/$file");  
                                
                                if(!is_dir($Sourse."/$file")){mkdir($Sourse."/$file",0777);}
                                }
                        
                        else{ 
                        
                        copy($T_DIR."/$file",$Sourse."/$file"); 
                        }
                }
                closedir($handle);
        }
}

解决方案 »

  1.   

    http://blog.csdn.net/free_kyy/archive/2007/02/09/1506538.aspxPHP中的copy()函数是用来复制文件的,没有相应的复制目录的函数,其实这也很简单,主要就是利用mkdir()和copy()结合递归来实现,而对于删除,同样是利用rmdir()和unlink()结合递归来实现复制目录的代码:function copyDir($source, $destination)
    {
        $result = true;    if(! is_dir($source))
        {
            trigger_error('Invalid Parameter', E_USER_ERROR);
        }
        if(! is_dir($destination))
        {
            if(! mkdir($destination, 0700))
            {
                trigger_error('Invalid Parameter', E_USER_ERROR);
            }
        }    $handle = opendir($source);
        while(($file = readdir($handle)) !== false)
        {
            if($file != '.' && $file != '..')
            {
                $src = $source . DIRECTORY_SEPARATOR . $file;
                $dtn = $destination . DIRECTORY_SEPARATOR . $file;
                if(is_dir($src))
                {
                    copyDir($src, $dtn);
                }
                else
                {
                    if(! copy($src, $dtn))
                    {
                        $result = false;
                        break;
                    }
                }
            }
        }
        closedir($handle);    return $result;
    }
    ?>删除目录的代码:<?php
    function removeDir($dirName)
    {
        $result = false;    if(! is_dir($dirName))
        {
            trigger_error('Invalid Parameter', E_USER_ERROR);
        }    $handle = opendir($dirName);
        while(($file = readdir($handle)) !== false)
        {
            if($file != '.' && $file != '..')
            {
                $dir = $dirName . DIRECTORY_SEPARATOR . $file;
                is_dir($dir) ? removeDir($dir) : unlink($dir);
            }
        }
        closedir($handle);    $result = rmdir($dirName) ? true : false;    return $result;
    }
    ?>注意:无论是复制还是删除,你都要有相应的文件操作权限。
      

  2.   

    iasky(iasky) 
    呵呵,我发这个帖子的时候还没找到那篇文章的
      

  3.   

    luccer() 
    shell 我还不知道是什么呢,初学PHP
    你给的函数很有用,谢谢