|
Вопрос # 2 075/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Нужно регулярно производить синхронизацию по FTP с несколкими серверами.
Файлы достаточно большие (до 45 Мб).
Есть один "обменный компьютер", который должен скачать с нескольких компьютеров несколько файлов через FTP, а после этого закачать на них же.
Пока ничё лучше не придумал, как cmd + ftp - средствами самой операционки. Но если связь обрывается, то приходится заново. Да и не очень-то это и удобно.
Нужна возможность докачки, возможность сделать паузу и ограничение на скорость обмена.
Подскажите, такое реализовать возможно?
 |
Вопрос задал: Фамилия Имя Отчество (статус: Посетитель)
Вопрос отправлен: 11 ноября 2008, 09:02
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Feniks
Здравствуйте, Emfs!
Держите статью "Создаём свой GetRight" в приложении. Она конечно же полностью не решит ваши вопросы, но направит на путь истенный.
P.S. Желаю удачи.
Приложение: Переключить в обычный режим-
-
-
-
-
-
-
-
-
-
-
-
-
- procedure tform1.button2click(sender: tobject);
- begin
- end;
-
-
- procedure tform1.button2click(sender: tobject);
- begin
-
-
-
- end ;
-
-
-
-
- procedure tform1.edit1change(sender: tobject) ;
- begin
- end ;
-
-
- 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
-
- end
- else
-
- begin
-
- end
-
- end
-
- end ;
-
-
-
- var
- serv , 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 ;
-
-
- end
- else
-
- 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);
- begin
- progressbar1.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"
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|