copy entire directory but exclude some files php -
trying find way copy entire directory exclude files, in case need exclude directory contain 1 file png... figured use similar code have absolutely no clue how exclude file
function xcopy($source, $dest, $permissions = 0755) { // check symlinks if (is_link($source)) { return symlink(readlink($source), $dest); } // simple copy file if (is_file($source)) { return copy($source, $dest); } // make destination directory if (!is_dir($dest)) { mkdir($dest, $permissions); } // loop through folder $dir = dir($source); while (false !== $entry = $dir->read()) { // skip pointers if ($entry == '.' || $entry == '..') { continue; } // deep copy directories xcopy("$source/$entry", "$dest/$entry", $permissions); } // clean $dir->close(); return true; }
here function may work you. have notated clarification:
<?php function copydirectory($settings = false) { // script may take time if there lots of files ini_set("max_execution_time",3000); // validation , pre-sets $directory = (isset($settings['dir']) && !empty($settings['dir']))? $settings['dir'] : false; $copyto = (isset($settings['dest']) && !empty($settings['dest']))? $settings['dest'] : false; $filter = (isset($settings['filter']) && !empty($settings['filter']))? $settings['filter'] : false; // add copy destinations not copy otherwise // have infinite loop of files being copied $filter[] = $copyto; // stop if directory not set if(!$directory) return; // create recursive directory iterator $dir = new recursiveiteratoriterator(new recursivedirectoryiterator($directory),recursiveiteratoriterator::child_first); try{ foreach($dir $file) { $copydest = str_replace("//","/",$copyto."/".str_replace($_server['document_root'],"",$file)); $compare = rtrim($file,"."); if(is_dir($file)) { if(!is_dir($copydest)) { if(!in_array($compare,$filter)) { if(isset($skip) && !preg_match("!".$skip."!",$file) || !isset($skip)) @mkdir($copydest,0755,true); else $record[] = $copydest; } else { $skip = $compare; } } } elseif(is_file($file) && !in_array($file,$filter)) { copy($file,$copydest); } else { if($file != '.' && $file != '..') $record[] = $copydest; } } } // catch errors in copying (like permission errors) catch (exception $e) { $error[] = $e; } } // copy $settings['dir'] = $_server['document_root']; // copy $settings['dest'] = $_server['document_root']."/tester"; // files , folders not include contents $settings["filter"][] = $_server['document_root'].'/core.processor/'; $settings["filter"][] = $_server['document_root'].'/config.php'; $settings["filter"][] = $_server['document_root'].'/client_assets/images/'; // create instance copydirectory($settings); ?>
Comments
Post a Comment