Перейти к содержимому

Сервис обмена электронных валют


Копирование каталога с содержимым

#11 matroskin8

matroskin8
    Topic Starter
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143
0

Отправлено 27 Сентябрь 2010 - 09:56

Статья в части указания построения ссылки помогла - за нее отдельное спс ;) -, хотя опять же делал немного методом проб и ошибок, поскольку в том виде, как представлено в статье, работать не хотело, но немного изменив ссылку - заработало. В статье рекомендуется делать так:
ftp://name:password@ftp://host/path/
но у меня так не хочет открывать нужный каталог... а так - работает:
ftp://name:password@host/path/
Подключаться по HTTP не получается, хотя не очень и пробовал :) , по FTP, как уже сказал, все получилось... но в любом случае мой скрипт не подходит для подобной задачи - очень медленно и ненадежно работает (наверное из-за того, что для копирования каждого файла и субкаталога происходит новое подключение к хосту), поэтому все же эту задачу надо решать с помощью ф-ций FTP - один раз установив соединение и пошло копирование. Хотя, быть может, мой скрипт и можно оптимизировать ;)
<?php

function dir_new($mdir)

{
include ("inc.php"); //подключаем файл со значениями переменных - хост, юзер, пасс
$copy = "D:\copy"; //каталог назначения
$folder = "ftp://".$user.":".$pass."@".$host."/filesss/"; //каталог копирования

if(!is_dir($copy))
mkdir($copy);

$dir_files = opendir($folder.$mdir);

while(false !== ($file = readdir($dir_files)))
   if($file != '.' && $file != '..')
   $new[] = $mdir."/".$file;

	   if($new){
	   foreach($new as $check )
			if(is_dir($folder.$check))
		   {
		   mkdir($copy.$check);
		   dir_new($check);
		   }
			elseif(is_file($folder.$check))
		   {
		   copy($folder.$check, $copy.$check);
		   }
	   }

   }

dir_new("");
?>
inc.php
<?php
$host = "site.ru/public_html"; //путь ДО копируемого каталога, реальный путь можно глянуть в фтп-менеджере
$user = "user";
$pass = "pass";
?>

  • 0


#12 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Сентябрь 2010 - 10:06

matroskin8, естественно этот метод плох, т.к. для копирования каждого файла идёт подключение по FTP. Для подобных целей нужно использовать соккеты или FTP-функции
  • 0

#13 matroskin8

matroskin8
    Topic Starter
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 27 Сентябрь 2010 - 12:20

Ну, просили отписаться, если что-либо удастся, - я и отписался ;) .Мне просто было интересно возможно ли решить эту задачу без ф-ций ФТП - оказалось возможно. В любом случае, сложно представить задачу, при которой бы понадобилось использование данного скрипта (имеется в виду копирование с хоста на локальный комп).
Но вот если надо копировать что-то внутри самого сервера (делать копию каталога со всем содержимым), то скрипт как раз самое то, редактируем немного под свои нужды, закидываем на сервак, вызываем... и все отлично работает :)
  • 0


#14 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 Сентябрь 2010 - 12:23

matroskin8, на основе этого можно и внутренний файловый менеджер написать. Только тут нужен JS
  • 0

#15 matroskin8

matroskin8
    Topic Starter
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 27 Сентябрь 2010 - 12:26

Да мне оно, честно говоря, нужно постольку-поскольку... меня и FileZilla вполне устраивает :)
Просто на одном из форумов заинтересовали данной задачей - вот и пытался ее решить в свободное время.


  • 0



Оформление форума – IPBSkins.ru