能用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);
}
}
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);
}
}
{
$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;
}
?>注意:无论是复制还是删除,你都要有相应的文件操作权限。
呵呵,我发这个帖子的时候还没找到那篇文章的
shell 我还不知道是什么呢,初学PHP
你给的函数很有用,谢谢