Скарирование папок ftp сервера

melnikdima

Новичок
Скарирование папок ftp сервера

Народ можете подать идейку как организовать полное сканирование ftp сервера со всеми поддерикториями? так же необходимо записать всё это в базу данных mysql и потом выводить на сайте.

подскажите идейку как сканировать ftp сервер и записывать данные в mysql
 

kvf77

Red Devil
melnikdima

ты давай для начала раздели две задачи на две - сканировать и записывать. затем вдумчиво скажи нам что делал, почему не получилось. Мы поможем - клянчить готовых решений тут не надо
 

melnikdima

Новичок
ок вот проблема в чём я не могу додуматся после того как
PHP:
 ftp_nlist
просканирует корневую дерикторию как сделать чтобы начала сканировать дальше поддериктории?
всё остальное сам сделаю
 

kvf77

Red Devil
melnikdima
гораздо проще, быстрее и правильнее, написать для этого SH скрипт и потом работать с файлом, содержащим результат его деятельности
 

melnikdima

Новичок
какой какой скприпт? SH = это помоему тока на сервере под windows не идёт я не прав? а как мне реальизовать не подскажете вот что описал?
 

kvf77

Red Devil
melnikdima
В Linux есть команда find, которая имеет ключик рекурсивного обхода дерева папок, ее вывод можно направить в файл. Собственно - это команда самого сервера, написан на си и будет работать очень быстро и без извратов. Причем она понимает всякие маски файлов и с атрибутами умеет работать. Ну а сделанный ей файлик потом просто можно построчно читать скриптом и засовывать в базу что там тебе нужно.
 

melnikdima

Новичок
а я вот и не могу как раз допереть каким мне построчно скарировать а точнее каким образов возвращатся на уровень вверх и заходить в другую поддеректорию
 

kvf77

Red Devil
melnikdima

ну я тебе сказал - воспользуйся командами самого сервера если у тебя есть доступ по ssh команда find умеет все делать сама и заходить и так далее
 

MisterX

Новичок
2kvf77:
При чем здесь find, если человеку список дерикторий на ФТП сервере надо получить, иль в ФТП добавили команду FIND? ;))

2melnikdima:
Кури ftp_rawlist , и ищи в атрибутах атрибут "d", вот и будет тебе директория! Тоесть если директория знач в ней могут быть файлы, а тоесть заходи в нее и сканируй файлы ))

Вот те пример на получение директорий корня ФТП сервера, а дальше рекурсию допиши сам:
PHP:
<?

$conn_id = ftp_connect('host');

$login_result = ftp_login($conn_id, 'login', 'pass');

$list = ftp_rawlist($conn_id, '/');


foreach ($list as $current) {
	$split = preg_split("[ ]", $current, 9, PREG_SPLIT_NO_EMPTY);
	if ($split[0] != "total") {
		$parsed[]['isdir']          = $split[0]{0} === "d"; //Если true значит дериктория
		$parsed[]['perms']          = $split[0];
		$parsed[]['number']    	    = $split[1];
		$parsed[]['owner']          = $split[2];
		$parsed[]['group']          = $split[3];
		$parsed[]['size']        	= $split[4];
		$parsed[]['month']          = $split[5];
		$parsed[]['day']        	= $split[6];
		$parsed[]['time/year'] 		= $split[7];
		$parsed[]['name']        	= $split[8];
		if($split[0]{0} === "d"){
			echo $split[8]."<BR>";
		}
	}
}

ftp_close($conn_id);
?>
 

SiMM

Новичок
MisterX, советую проверять свой код, прежде чем постить в форум.
melnikdima, в мануале. Есть. Масса. Примеров. Ну просто масса.
 

DIG

Новичок
Партнер клуба
Вот пример http://www.softtime.ru/scripts/ftpscaner.php

ftp_rawlist (ftp_stream, directory) посылает фтп серверу команду LIST, ftp_rawlist (ftp_stream, directory, true)
посылает команду LIST -R и никакой рекурсии самому писать не придется.

Вобщем все это есть в мане.
 

kvf77

Red Devil
MisterX

ну я привык по ssh ходить на сервер и делать все системными командами - это удобюнее и быстрее
 

melnikdima

Новичок
у меня какойто глюк на файллах у которыз есть пробелы в название при поиске через

http://www.softtime.ru/scripts/ftpscaner.php
не выводится расширение
 

DIG

Новичок
Партнер клуба
Потому что там строку вида которую выдет фтп сервер разбивают по пробелам.
list(...) = preg_split("/[\s]+/", $file);
Перделывай регулярку под свои нужды, а вообще обычно на фтп файлы с пробелами не называют.
 

melnikdima

Новичок
спасибо

-~{}~ 15.03.06 01:16:

народ что то не допру как мне разбить
$file = "-rw-rw-rw- 1 user group 256 Mar 04 18:03 !!ВИНИМНИЕ!! Адрес ПСИ_ФОРУМА.txt";

на
-rw-rw-rw-
1
user
group
256
Mar
04
18:03
!!ВИНИМНИЕ!! Адрес ПСИ_ФОРУМА.txt

разбивал через пробелы но возникают проблемы выводится тока !!ВИНИМНИЕ!!
 

melnikdima

Новичок
SiMM
не издевайся

-~{}~ 15.03.06 01:56:

preg_split("/[\s]+/", $file);
народ подсобите что надо написать вместо [\s]+?

-~{}~ 15.03.06 01:56:

ау
 
Сверху