Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/06/2008, 22:03
Avatar de marcosr
marcosr
 
Fecha de Ingreso: agosto-2005
Ubicación: Montevideo, Uruguay
Mensajes: 451
Antigüedad: 18 años, 8 meses
Puntos: 5
Copiar Todo El Contenido De Una Carpeta A Otra, Unix

Hola amigos, me encuentro en un problema que parece no tener fin...

Estoy desarrollando un sistema para respaldar la información de mi servidor de una forma que tendría que ser fácil y rápida pero me encuentro con una gran piedra en el camino y es copiar carpetas enteras.

Yo tengo un servidor UNIX ("doméstico") y tengo los ficheros de apache (osea los scripts PHP) en /var/www/ mientras que los datos mysql y otra información importante se encuentran en /home/, las dos carpetas están muy lejos, y ninguna pertenece a la otra. Es por esto que se me ocurrió (no pregunten por qué) hacer que la carpeta /home/ se copie a /var/www/home/ temporalmente (hasta respaldar) para luego ser eliminada de este directorio, esto porque el script que genera archivos zip (que luego descargo), por algun motivo no puede ir a carpetas que se encuentran fuera del directorio www.

Este script tiene algún problema o es solo que tampoco para copiar puedo ir a directorios inferiores?
Código PHP:
$dstdir "home/";
        
$srcdir "/home/";
        
        if (!
is_dir($srcdir)) { echo "No existe el directorio BASE, un grave error puede estar ocurriendo, contacte al administrador.";  exit; }
        
        
$verbose true;
    
          if(!
is_dir($dstdir)) mkdir($dstdir);
          if(
$curdir opendir($srcdir)) {
            while(
$file readdir($curdir)) {
              if(
$file != '.' && $file != '..') {
                
$srcfile $srcdir '\\' $file;
                
$dstfile $dstdir '\\' $file;
                if(
is_file($srcfile)) {
                  if(
is_file($dstfile)) $ow filemtime($srcfile) - filemtime($dstfile); else $ow 1;
                  if(
$ow 0) {
                    if(
$verbose) echo "Copying '$srcfile' to '$dstfile'...";
                    if(
copy($srcfile$dstfile)) {
                      
touch($dstfilefilemtime($srcfile)); $num++;
                      if(
$verbose) echo "OK\n";
                    }
                    else echo 
"Error: File '$srcfile' could not be copied!\n";
                  }                  
                }
                else if(
is_dir($srcfile)) {
                  
$num += dircopy($srcfile$dstfile$verbose);
                }
              }
            }
            
closedir($curdir);
          } 
Saludos y muchas gracias de antemano !

P.D.: Existe alguna otra forma de respaldar más rápidamente que yo desconozca y este por esto "perdiendo el tiempo"?
__________________
Yo hago preguntas inteligentes para obtener respuestas rapidas, y vos?
(únete a la campaña !)