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($dstfile, filemtime($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"?