Копирование каталогов, подкаталогови файлов в них...

Dimonets

Guest
Копирование каталогов, подкаталогови файлов в них...

Здравствуйте!

Делаю один скрипт, и он на определенном этапе инсталляции должен уметь копировать определенный каталог и все его содержимое (подкаталоги, файлы) в другое место на сервере. Интересует вопрос как лучше это все сделать? Те мне нужно в цикле проходиться по всем каталогам, искать файлы, создавать необходимые каталоги\подкаталоги в новом месте и копировать туда файлы. Я знаю, что это решается немногими строчками кода, но может кто-нибудь уже делал подобную задачу и может поделиться подобной функцией?

Помогите плиз.

Спасибо.

PS. Подобная функция мне понадобится и для удаления всех файлов и всех подкаталогов в выбранном каталоге.
 

Кром

Новичок
Все уже есть на php.net
Смотри комментарии пользователей
[m]rmdir[/m]
[m]copy[/m]
 

Vasya

Guest
PHP:
/**
 * This function removes filesystem tree
 * Return TRUE if success
 */
function removeTree( $dir ) {
	$result = true;
	if( is_dir($dir) ) {
		$d = dir($dir);
		while( ($entry = $d->read()) && $result ) {
			if( ereg("^\.{1,2}$",$entry) ) {
				continue;
			} elseif( is_dir($dir."/".$entry) || is_file($dir."/".$entry) ) {
				$result = $result && removeTree($dir."/".$entry);
			} else {
				return false;
			}
		} // while
		$d->close();
		// unset dir object is important!
		unset($d);
		return ( $result && rmdir($dir) );
	} elseif( is_file($dir) ) {
		return (unlink($dir));
	}
	return false;
}  //  function removeTree( $dir )
 

VictorKr

Новичок
PHP:
<?
function copDir($oldpath, $newpath, $chmod="")
{
	if (!file_exists($newpath)) mkdir($newpath, $chmod);		//create dir
	$dir=opendir($oldpath); 
	while ($file = readdir($dir)) { 
		if ($file != '.' and $file != '..')
		{ 
			if (is_dir($oldpath.$file."/")) copDir($oldpath.$file."/", $newpath.$file."/", $chmod);
			else copy($oldpath.$file, $newpath.$file);
		}
	}
	closedir($dir);
}
?>
 

Crazy

Developer
Hint: по-настоящему гуманные люди при копировании дерева каталогов сканируют в ширину, в не в глубину...
 
Сверху