Mostrando entradas con la etiqueta copy. Mostrar todas las entradas
Mostrando entradas con la etiqueta copy. Mostrar todas las entradas

martes, 28 de junio de 2011

Copy directory folder PHP

Copy whole directory folder PHP

It is not exist any php function that allow make a copy of whole folder to another directory. The copy function not make it , only can a single file copy

below it show and explain some ways to do it.


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);
}

In this case the function copyDirToDir, receive as parameter a source direction and a destiny direction where it makes the copy

Pre-condition:

1- Both directories are valid , destiny direction is not need exist beacuse it will be create but the tree route until penultimate folder must be valid.

2- Must exist permissions in both directories for make copy and create files.

It makes a recursive search of the folders and copy all files.

Copy using command (shell_exec)

$src = "moises/home/public_html/folder";
$destiny = "moises/home/public_html/destiny ";

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


Copy files by patterns

If we wants make a copy of all files with extensions (.php) in a folder, we can make use of the function copyPatternToDir see the way below:

copyPatternToDir(“lib/*.php”,”lib2”); // of folder lib all files (.php) to folder 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);
}

}

}