J'utilise le code suivant sous Windows OS et PHP script, dans lequel je prends d'abord la différence entre deux structures de dossiers et ensuite le résultat doit être copié dans un autre dossier. voici le code ci-dessous.
$source = '/var/www/html/copy1';
$mirror = '/var/www/html/copy2';
function scan_dir_recursive($dir, $rel = null) {
$all_paths = array();
$new_paths = scandir($dir);
foreach ($new_paths as $path) {
if ($path == '.' || $path == '..') {
continue;
}
if ($rel === null) {
$path_with_rel = $path;
} else {
$path_with_rel = $rel . DIRECTORY_SEPARATOR . $path;
}
$full_path = $dir . DIRECTORY_SEPARATOR . $path;
$all_paths[] = $path_with_rel;
if (is_dir($full_path)) {
$all_paths = array_merge(
$all_paths, scan_dir_recursive($full_path, $path_with_rel)
);
}
}
return $all_paths;
}
$diff_paths = array_diff(
scan_dir_recursive($mirror),
scan_dir_recursive($source)
);
/*$diff_path = array_diff($mirror,$original);*/
echo "<pre>Difference ";print_r($diff_paths);
Difference of Folders Array
(
[4] => New Folder (2)
[5] => New Folder (2)/New Folder
[6] => New Folder (2)/New Folder/New Folder
[7] => New Folder (2)/New Folder/New Folder/New Text Document (2).txt
[8] => New Folder (2)/New Folder/New Folder/New Text Document.txt
)
foreach($diff_paths as $path)
{
echo $source1 = "var/www/html/copy2/".$path;
echo "<br>";
$des = "var/www/html/copy1/".$path;
copy_recursive_dirs($source1, $des);
}
function copy_recursive_dirs($dirsource, $dirdest)
{
$dir_handle=opendir($dirsource);
mkdir($dirdest,0777);
while(false!==($file=readdir($dir_handle)))
{/*echo "<pre>";
print_r($file);*/
if($file!="." && $file!="..")
{
if(is_dir($dirsource.DIRECTORY_SEPARATOR.$file))
{
//Copy the file at the same level in the destination folder
copy_recursive_dirs($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$file);
}
else{
//Copy the dir at the same lavel in the destination folder
copy ($dirsource.DIRECTORY_SEPARATOR.$file, $dirdest.DIRECTORY_SEPARATOR.$file);
}
}
}
closedir($dir_handle);
return true;
}
Chaque fois que j'exécute le script, j'obtiens la différence de sortie mais je n'obtiens pas l'autre copie dans le deuxième dossier comme le prévoit le code.... Merci de m'aider à rectifier...
MISE À JOUR Je veux juste copier la différence dans dans un autre dossier, s'il y a un autre moyen moyen, merci de m'aider....
UPDATE : Je reçois ces erreurs,
( ! ) Avertissement : opendir(var/www/html/copy2/Nouveau dossier (2)) [function.opendir] : failed to ouvrir le répertoire : No such file or directory in /var/www/html/pranav_test/syncss.php à la ligne 96
( ! ) Attention : mkdir() [function.mkdir] : Aucun fichier ou répertoire répertoire dans /var/www/html/pranav_test/syncss.php à la ligne 99
( ! ) Avertissement : readdir() : l'argument fourni n'est pas n'est pas un répertoire valide dans /var/www/html/pranav_test/syncss.php à la ligne 104
( ! ) Attention : closedir() : l'argument fourni n'est pas un répertoire valide. n'est pas un répertoire valide valide dans /var/www/html/pranav_test/syncss.php à la ligne 122