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);
}
P.D.: Existe alguna otra forma de respaldar más rápidamente que yo desconozca y este por esto "perdiendo el tiempo"?