• 53341930   Jefe del equipo
  • 58273366   Diseño
  • 53657844   Servicios Informáticos
"El alma del perezoso desea, y nada alcanza; Mas el alma de los diligentes será prosperada."
Proverbios 13:4
 

Blog Moises Soft

 

Copiar directorio PHP completo

Copiar directorio – carpeta completa PHP

No existe ninguna función de PHP que permita hacer una copia de un directorio completo hacia otro directorio. La función: copy de PHP no hace copias de directorios sino de archivos.

A continuación se muestran y explican varias formas de hacerlo.

 


function copyDirToDir($src,$dst){

$dir = opendir($src);

@mkdir($dst);

while(false !== ( $file =  readdir($dir)) ) {

if (( $file  != '.' ) && ( $file != '..' )) {

if (  is_dir($src . DIRECTORY_SEPARATOR . $file) ) {

copyDirToDir($src . DIRECTORY_SEPARATOR . $file,$dst .  DIRECTORY_SEPARATOR . $file);

}

else {
copy($src . DIRECTORY_SEPARATOR . $file,$dst . DIRECTORY_SEPARATOR .  $file);
  }
}
}

closedir($dir);
}


En este caso parte de una función que recibe como parámetros una dirección origen y una dirección destino donde se copiará el archivo.

Pre-condición:

 

1- Ambas directorios son válidos, la dirección destino no necesita existir, pues es creada; pero su ruta de árbol hasta la penúltima carpeta que es la que se crea, debe ser válida.

2- Existen permisos en ambos directorios tanto para copiar como para crear archivos.

Se hace una búsqueda recursiva de las carpetas y se copian los archivos.

 

Copiar usando Comandos Linux (shell_exec)

 


$src = "moises/home/public_html/carpeta"; $destino = "moises/home/public_html/destino ";

shell_exec("cp -r $src $destino");

Copiar archivos según patrón (patterns) Si quisiéramos copiar todos los archivos extensión (.php) que existen en una carpeta, podemos utilizar la función: copyPatternToDir de la siguiente manera:

copyPatternToDir(“lib/*.php”,”lib2”); // de lib todo los archivos php hacia la carpeta lib2


function copyPatternToDir($pattern, $dir) { foreach (glob($pattern) as $file) { if(!is_dir($file) && is_readable($file)) { $dest = realpath($dir) .DIRECTORY_SEPARATOR. basename($file); copy($file, $dest); } } }

Power by: Moises Soft