Ago 13

Digamos que queremos hacer un respaldo de archivos del servidor o copiar archivos de una ubicación a otra. Para esto este código nos puede servir.

En primera tenemos $dir y $dir2 que corresponden a la ruta origen y la ruta destino respectivamente, luego hacemos cambios a un script que ya había publicado antes, donde:

  • $dp=opendir($dir); abre el directorio para su lectura.
  • while($file=readdir($dp)) ciclo que lee el directorio mientras existan archivos en él.
  • Con $extension=getExtension($file); aplicamos un filtro para solo copiar archivos con ciertas extensiones
  • En la variable $cmd guardamos una cadena con el comando cp con sus parametros y con la función exec() ejecutamos el comando en el sistema.
function getExtension($archivo)
        {
      	 $a=explode(".",$archivo);
      	 return $a[count($a)-1];
        }
 
$dir  = getRuta($CveCom);
$dir2 = getRuta($comn);
 
if(!file_exists($dir)) //verificamos que existe el directorio
   {
    echo "<br/>Error... El directorio no existe. Configura bien tu variable \"dir\" ...";
   }
else
   {
    $i=0;
    //echo $dir;
    $dp=opendir($dir);
	while($file=readdir($dp)) //hacemos un ciclo para guardar los nombres de los directorios y archivos que se tienen en el directorio actual
          {
           $extension=getExtension($file);
	       if($extension=="php" || $extension=="html" || $extension=="htm")
	          {
                    $srcfile=$dir."/".$file;
		    $dstfile=$dir2."/";
		    echo "Copiar '$srcfile' a '$dstfile'... <br>";
	            $cmd = "cp $srcfile $dstfile";
		    $eje1=exec($cmd, $output, $return_var);
                 }
         }
   }

Otra opción para copiar los archivos sería la función copy(), pero al ejecutar el script marcaba error al ejecutarse, así que decidi usar la alternativa del exec().

Post relacionados:

  1. Has una página de rolas
  2. Has una página de vídeos

Leave a Reply