我正在使用我写的功能来复制目录和文件。它只复制目录和文件一次。如果文件不存在,如何将文件从源文件夹复制到目标文件夹?
这是功能。基本上我想将analyst_uploads中的文件夹labref及其内容复制到第二个文件夹store_for_issue。如果文件在同一天上载到源文件夹,则应将文件复制到目标文件夹“store_for_issue”。创建文件夹(如果不存在)或更新内容
public function full_copy( ) {
$labref= $this->uri->segment(3);
$source='analyst_uploads/'.date('Y').'/'.date('M').'/'.$labref;
$newfolder='store_for_issue';
if(is_dir($newfolder)){
mkdir($newfolder.'/'.$labref,0777,TRUE);
}
$target=$newfolder.'/'.$labref.'/';
copy( $source, $target );
}
答案 0 :(得分:1)
这个怎么样:
public function full_copy( ) {
$labref= $this->uri->segment(3);
$source='analyst_uploads/'.date('Y').'/'.date('M').'/'.$labref;
$newfolder='store_for_issue';
if(!is_dir($newfolder)){
mkdir($newfolder.'/'.$labref,0777,TRUE);
}
$target=$newfolder.'/'.$labref.'/';
shell_exec('cp -ur '. $source . ' ' . $target);
}
这使用linux cp -ur
并且只复制目标目录中不存在的文件,或者替换目标目录中比源文件旧的文件。它将以递归方式运行。
当然,如果你想要一个只有PHP的解决方案,你可以使用RecursiveDirectoryIterator
或类似的方法来遍历源目录中的所有文件,并逐个比较/复制它们。
答案 1 :(得分:0)
if (!file_exists($target)) {
copy( $source, $target );
}