Foros del Web » Programando para Internet » PHP »

Como copiar un directorio completo a otra ruta.

Estas en el tema de Como copiar un directorio completo a otra ruta. en el foro de PHP en Foros del Web. Estimados amigos, He hecho el siguiente codigo: Código PHP: <? // Paso 1 $folder  =  substr ( preg_replace ( '/[\/\\\:*?"<>|.$^1]/' ,  '' ,  crypt ( time ())),  ...
  #1 (permalink)  
Antiguo 10/04/2007, 00:14
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 22 años, 6 meses
Puntos: 0
Pregunta Como copiar un directorio completo a otra ruta.

Estimados amigos,
He hecho el siguiente codigo:
Código PHP:
<?
// Paso 1
$folder substr(preg_replace('/[\/\\\:*?"<>|.$^1]/'''crypt(time())), 012);

// Paso 2
define ("DIRECTORY""C:/www/$folder");

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

// Paso 3
$file "C:/www/index.php";
$newfile "C:/www/$folder/index.php";

if (!
copy($file$newfile)) {
    echo 
"failed to copy $file...\n";
}
?>
Lo que hace el codigo es:

Paso 1: $folder = Genera una clave de 12 caracteres que devuelve algo asi como: 34kjldfs4jeI (esto sera el nombre de la nueva carpeta)

Paso 2: Creamos el directorio "$folder" en nuestra carpeta www

Paso 3: Movemos el archivo index.php desde C:/www/ a C:/www/$folder/index.php


Hasta aqui todo perfecto y me funciona excelente.

Mi problema viene ahora:
Dentro de la carpeta www no solo tengo el archivo index.php si no que tambien otros 5 archivos. Por lo tanto lo que necesito es copiar todos los archivos que estan en www al directorio que hemos creado con $folder.

Espero se entienda, quien no me entienda digame como explicarlo mejor y agradezco desde ya su ayuda ya que es algo que me tiene bastante complicado, busque en php.net pero no encontre nada similar.

Muchisimas gracias.
__________________
ChilenoCesar Looking for something new...
  #2 (permalink)  
Antiguo 10/04/2007, 00:44
Avatar de 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...
  #3 (permalink)  
Antiguo 10/04/2007, 10:35
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Como copiar un directorio completo a otra ruta.

saludos CHILENOCES

Muy bueno tu aporte, lo probe pero solo funciona para el server, si lo ejecuto desde un cliente sigue copiando los archivos pero desde el server, se puede pasar esa información al cliente????


Agradezco tu ayuda de antemano
  #4 (permalink)  
Antiguo 10/04/2007, 10:58
Avatar de 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.

No entiendo precisamente a que te refieres con pasar la informacion al cliente si puedes describir un poco mejor para poder ayudarte.

saludos
__________________
ChilenoCesar Looking for something new...
  #5 (permalink)  
Antiguo 10/04/2007, 13:24
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Como copiar un directorio completo a otra ruta.

saludos CHILENOCES

Si un cliente necesita copiar una carpeta del servidor con el codigo que nos facilitaste no lo haria pues solo lo haria en el mismo servidor, eso lo comprobe ejecutando el codigo desde un cliente sin tener instalado php ni nada...

es que me pidieron hacer eso, ahh y igualmente si deseo copiar una carpeta que esta en el cliente al servidor....


Agradezco de antemano tu ayuda.
  #6 (permalink)  
Antiguo 10/04/2007, 15:00
Avatar de 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.

Bueno el script yo lo necesito y uso para copiar carpetas dentro de un mismo servidor, ahora segun lo que entiendo tu necesitas copiar carpetas desde el servidor a un PC o viceversa, en este caso creo que lo mas conveniente seria trabajar con las funciones FTP de php para poder conectarse y extraer datos del servidor y transferirlos a otro lado, http://cl.php.net/manual/en/function.fopen.php y combinarlo con otros como copy() etc.

No se si se entienda si no avisame para postear algun ejemplo.

Saludos.
__________________
ChilenoCesar Looking for something new...
  #7 (permalink)  
Antiguo 11/04/2007, 13:37
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Como copiar un directorio completo a otra ruta.

Saludos CHILENOCES

revise el articulo que me referiste y sigue haciendo lo mismo todo lo manda al servidor

que mas puedo hacer?????
  #8 (permalink)  
Antiguo 11/04/2007, 17:42
Avatar de 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.

Hola,
lo que pasa es que aun no me respondes mi pregunta:

Servidor = Servidor
Cliente = PC de algun usuario

A eso te refieres con cliente y servidor?


De ser asi lo que necesitaas hacer es bajar archivos desde el server a una maquina (PC) verdad?

Saludos
__________________
ChilenoCesar Looking for something new...
  #9 (permalink)  
Antiguo 13/04/2007, 10:28
 
Fecha de Ingreso: febrero-2005
Mensajes: 673
Antigüedad: 19 años, 2 meses
Puntos: 2
Re: Como copiar un directorio completo a otra ruta.

saludos CHILENOCES

si a eso me refiero

Servidor = Servidor
Cliente = PC de algun usuario

pero el servidor es windows 2000 server

Agradezco de antemano tu apoyo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 20:13.