| 
| 
 | Вопрос # 2 075/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!
 Нужно регулярно производить синхронизацию по FTP с несколкими серверами.
 Файлы достаточно большие (до 45 Мб).
 
 Есть один "обменный компьютер", который должен скачать с нескольких компьютеров несколько файлов через FTP, а после этого закачать на них же.
 
 Пока ничё лучше не придумал, как cmd + ftp - средствами самой операционки. Но если связь обрывается, то приходится заново. Да и не очень-то это и удобно.
 
 Нужна возможность докачки, возможность сделать паузу и ограничение на скорость обмена.
 
 Подскажите, такое реализовать возможно?
 
|  |   Вопрос задал: Фамилия Имя Отчество (статус: Посетитель)Вопрос отправлен: 11 ноября 2008, 09:02
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Feniks Здравствуйте, Emfs!Держите статью "Создаём свой GetRight" в приложении. Она конечно же полностью не решит ваши вопросы, но направит на путь истенный.
 
 P.S. Желаю удачи.
 Приложение:Переключить в обычный режим              procedure tform1.button2click(sender: tobject);beginend;  procedure tform1.button2click(sender: tobject);begin   end ;    procedure tform1.edit1change(sender: tobject) ;beginend ;  procedure tform1.edit1change(sender: tobject) ;begin end ;   edit2.tag := 1 ;      procedure tform1.button1click(sender: tobject) ;begin if ( edit1.tag = 1 ) and ( edit2.tag = 1 ) and ( edit1.text <> '' )  begin end end ;    procedure tform1.button1click(sender: tobject) ;begin if ( edit1.tag = 1 ) and ( edit2.tag = 1 ) and ( edit1.text <> '' )       begin endelse  begin end end end ;   varserv , addr , host , dir : string ;   procedure tform1.button1click(sender: tobject) ;begin if ( edit1.tag = 1 ) and ( edit2.tag = 1 ) and ( edit1.text <> '' )       begin  host := copy ( addr , 1 , ( pos( '/' , addr ) - 1 ) ) ; delete( addr , 1 , ( pos( '/' , addr ) - 1 ) ) ;dir := addr ;   endelse  begin end end end ;          edit1.enabled := false ;    nmftp1.host := host ;nmftp1.userid := 'anonymous' ;nmftp1.password := '' ; nmftp1.connect ;nmftp1.mode( mode_image ) ; nmftp1.download( dir , edit2.text ) ;  nmftp1.disconnect ;   edit1.enabled := true ; edit1.clear ;     procedure tform1.nmftp1connect(sender: tobject);begin end;  procedure tform1.nmftp1connectionfailed(sender: tobject);begin end;          edit1.enabled := false ;     delete(addr, 1, 7) ;  nmhttp1.inputfilemode := true ;nmhttp1.body := edit2.text ;    edit1.enabled := true ; edit1.clear ;       procedure tform1.nmftp1packetrecvd(sender: tobject);beginprogressbar1.position := round(nmftp1.bytesrecvd*100/nmftp1.bytestotal) ; nmftp1.bytestotal ) ;end;           
|  | Ответ отправил: Feniks (статус: Бакалавр)Время отправки: 14 ноября 2008, 13:17
 
 |  
 Мини-форум вопросаВсего сообщений: 8; последнее сообщение — 11 ноября 2008, 21:17; участников в обсуждении: 4. 
|   | Vova Sitnov (статус: Посетитель), 11 ноября 2008, 11:21 [#1]:существует пакет - FastNet там есть компонент NMFtp можно через него попробовать! |  
|   | DNK (статус: Студент), 11 ноября 2008, 13:01 [#2]:Emfs! Мне не совсем понятна работа обменного компьютера. Средствами cmd+ftp вы организовали обмен между удаленными серверами?
 Очень интересно лично для себя. Всегда думал, что команда ftp ведет обмен только между удаленным и локальным узлом.
 
 Если только вы не использовали связку cmd+telnet+ftp?
 "Digital Networked Knight" |  
|   | Вадим К (статус: Академик), 11 ноября 2008, 13:07 [#3]:протокол ftp позволяет подключиться к двум серверам, а потом отдать команду с одно качать на другой. при этом "коммандный компьютер" не пропускает через себя траффик файлов. Это побочный эффект. А что за файлы синхронизируются, не база данных случайно?
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Фамилия Имя Отчество (статус: Посетитель), 11 ноября 2008, 15:37 [#4]:Ершов Денис, с обменного компа берутся файлы для формирования основной базы. А те компы - удалённые районы. Обмен ведётся только между удалённым и обменным компьютером (локальным) 
 Вадим К, точно, база данных.
 |  
|   | Вадим К (статус: Академик), 11 ноября 2008, 15:45 [#5]:Если это база, то кто мешает делать немножко по другому. Пусть каждый локальный компьютер сохраняет предыдущую версию базы перед синхронизацией. И присылает не саму базу, а разницу, то есть, это будут сообщения вида "такая запись есть, такой нет". Как ещё более изощерённый вариант - это будет готовый sql файл, который содержит записи вида insert/delete. И присылают только разницу. Назад им тоже уходит только разница.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Фамилия Имя Отчество (статус: Посетитель), 11 ноября 2008, 16:03 [#6]:Вадим, так и делается. Не SQL, но гоняется не вся база это точно. Потому что вся - несколько гигов. |  
|   | Вадим К (статус: Академик), 11 ноября 2008, 16:37 [#7]:по моему, тут надо подумать о кластеризации. Когда серверы сами между собой будут синхронизироваться либо сервер вообще физически один. Но учитывая, что у вас в России за МКАДом толком и интернета нет, либо цена на него такая, что дешевле  на дисках носить. 
 Если файл генерируется самостоятельно, то докачку можно сделать очень просто и красиво. Файл паковать в архив и разбивать на части (рар поддреживает это автоматически). и качать по куску. таким образом можно минимизировать проблемы с потерей связи. А докачка вроде на фтп поддерживается, но утверждать не буду.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | DNK (статус: Студент), 11 ноября 2008, 21:17 [#8]:Покопал в Итернете. Век живи  век учись. Сколько работал с этим протоколом, а про FXP не слыхал. "Digital Networked Knight" |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |