<?php 
/*
 Копирование папок a la xcopy 
 (с перезаписью более старых файлов) 
*/

setlocale(LC_ALL'ru_RU.cp1251');
date_default_timezone_set('Asia/Irkutsk');

function 
copy_folder($d1$d2$upd true$force true) {
    if ( 
is_dir$d1 ) ) {
        
$d2 mkdir_safe$d2$force );
        if (!
$d2) {fs_log("!!fail $d2"); return;}
        
$d dir$d1 );
        while ( 
false !== ( $entry $d->read() ) ) {
            if ( 
$entry != '.' && $entry != '..' 
                
copy_folder"$d1/$entry""$d2/$entry"$upd$force );
        }
        
$d->close();
    }
    else {
        
$ok copy_safe$d1$d2$upd );
        
$ok = ($ok) ? "ok-- " " -- ";
        
fs_log("{$ok}$d1"); 
    }
//function copy_folder

function mkdir_safe$dir$force ) {
    if (
file_exists($dir)) {
        if (
is_dir($dir)) return $dir;
        else if (!
$force) return false;
        
unlink($dir);
    }
    return (
mkdir($dir0777true)) ? $dir false;
//function mkdir_safe

function copy_safe ($f1$f2$upd) {
    
$time1 filemtime($f1);
    if (
file_exists($f2)) {
        
$time2 filemtime($f2);
        if (
$time2 >= $time1 && $upd) return false;
    }
    
$ok copy($f1$f2);
    if (
$oktouch($f2$time1);
    return 
$ok;
//function copy_safe 

function fs_log($str) {
    
$log fopen("./fs_log.txt""a");
    
$time date("Y-m-d H:i:s");
    
fwrite($log"$str ($time)\n");
    
fclose($log);
}