Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/04/2007, 00:44
Avatar de CHILENOCES
CHILENOCES
 
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 22 años, 6 meses
Puntos: 0
Re: Como copiar un directorio completo a otra ruta.

Muchachos encontre la solucion jejeje y para no ser egoista aqui va:

Pagina copydirr.inc.php (se puede renombrar a lo que sea)
Codigo obtenido desde www.php.net/copy
Código PHP:
<?php
// copydirr.inc.php
/*
26.07.2005
Author: Anton Makarenko
    makarenkoa at ukrpost dot net
    webmaster at eufimb dot edu dot ua
*/
function copydirr($fromDir,$toDir,$chmod=0757,$verbose=false)
/*
    copies everything from directory $fromDir to directory $toDir
    and sets up files mode $chmod
*/
{
//* Check for some errors
$errors=array();
$messages=array();
if (!
is_writable($toDir))
    
$errors[]='target '.$toDir.' is not writable';
if (!
is_dir($toDir))
    
$errors[]='target '.$toDir.' is not a directory';
if (!
is_dir($fromDir))
    
$errors[]='source '.$fromDir.' is not a directory';
if (!empty(
$errors))
    {
    if (
$verbose)
        foreach(
$errors as $err)
            echo 
'<strong>Error</strong>: '.$err.'<br />';
    return 
false;
    }
//*/
$exceptions=array('.','..');
//* Processing
$handle=opendir($fromDir);
while (
false!==($item=readdir($handle)))
    if (!
in_array($item,$exceptions))
        {
        
//* cleanup for trailing slashes in directories destinations
        
$from=str_replace('//','/',$fromDir.'/'.$item);
        
$to=str_replace('//','/',$toDir.'/'.$item);
        
//*/
        
if (is_file($from))
            {
            if (@
copy($from,$to))
                {
                
chmod($to,$chmod);
                
touch($to,filemtime($from)); // to track last modified time
                
$messages[]='File copied from '.$from.' to '.$to;
                }
            else
                
$errors[]='cannot copy file from '.$from.' to '.$to;
            }
        if (
is_dir($from))
            {
            if (@
mkdir($to))
                {
                
chmod($to,$chmod);
                
$messages[]='Directory created: '.$to;
                }
            else
                
$errors[]='cannot create directory '.$to;
            
copydirr($from,$to,$chmod,$verbose);
            }
        }
closedir($handle);
//*/
//* Output
if ($verbose)
    {
    foreach(
$errors as $err)
        echo 
'<strong>Error</strong>: '.$err.'<br />';
    foreach(
$messages as $msg)
        echo 
$msg.'<br />';
    }
//*/
return true;
}
/* sample usage:
WARNING:
if You set wrong $chmod then You'll not be able to access files and directories
in destination directory.
For example: once upon a time I've called the function with parameters:
copydir($fromDir,$toDir,true);
What happened? I've forgotten one parameter (chmod)
What happened next? Those files and directories became inaccessible for me
(they had mode 0001), so I had to ask sysadmin to delete them from root account
Be careful :-)

require('./copydirr.inc.php');
copydirr('./testSRC','D:/srv/Apache2/htdocs/testDEST',0777,true);
/*/

?>
Y luego el archivo index.php que es el que ejecutara el proceso
Obtenido de mi cerebro
Código PHP:
<?
require('copydirr.inc.php');

// Generamos la Clave para el nombre del directorio
$key substr(preg_replace('/[\/\\\:*?"<>|.$^1]/'''crypt(time())), 012);

// Creamos El directorio nuevo con el nombre aleatorio obtenido de $key
define ("DIRECTORY""C:/www/$key");

do {
    
$dir DIRECTORY;
    while (!
is_dir($dir)) {
        
$basedir dirname($dir);
        if (
$basedir == '/' || is_dir($basedir))
            
mkdir($dir,0777);
        else
            
$dir=$basedir;
   }
} while (
$dir != DIRECTORY);

// Le indicamos al Script de donde obtener los archivos a copiar
$origen "C:/www";

// Damos la ruta donde deben ir los archivos y donde $key es el nombre de la nueva carpeta creada aleatoriamente
$folder "C:/www/$key";

// Copiamos todos los archivos a la nueva carpeta usando el archivo copydirr.inc.php
copydirr($origen,$folder,0755,true);
?>
Ojala les sirva!! Salud!
__________________
ChilenoCesar Looking for something new...