|
|
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
Делаю программку для синхронизации файлов по сети наподобие майл облака. С синхронизацией файлов справился: Программка работает следующим образом:1 сервер и несколько клиентов. Соединение по indy tcp. 1.Сначала у клиента получаем список файлов и заносим его в sqlite базу. Причем заодно сравниваем с существующим списком файлов в бд: если не совпадает размер или дата изменения файла - ставим отметку(в бд), что файл изменен и его нужно отправить на сервер, если файл есть в бд, но нет в каталоге - удаляем из базы+ ставим отметку на удаление файла из сервера. 2. Соединяемся с сервером, получаем список файлов, сравниваем со списком бд, при этом производим необходимые действия - обновляем, либо удаляем файлы либо на сервере, либо у клиента. Проблема в синхронизации самих каталогов: допустим у клиента есть пустой каталог "Новая папка", 1 этап- вносим папку в бд. 2. синхронизируемся с сервером -> теперь серверная часть создает папку "Новая папка" у себя. Тут вроде все логично. 3. например я удаляю данную папку у клиента и создаю заново с тем же названием. (Получилось так что вроде папка та же, но экземпляр уже другой). По логике - на сервере старая "Новая папка" должна обновиться. Но как у клиента унифицировать папку - непонятно. Если б у каждой папки был свой id или guid - проблем бы не было - клиент сканирует свой каталог, видит в нем "Новую папку" - сравнивает id - если не совпадает - ставит отметку, что папка обновлена и ее нужно обновить и на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 13:13 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
frizz_, чем же папка отличается от файла? Почему к папке отдельный подход? Если удалить у клиента файл, а потом создать с таким же именем, то файл будет таким же или другим? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 13:25 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
frizz_, У папок/файлов - есть время создания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 13:26 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
Тут непонятна цель всего задуманного. Сначала определись с целями, терминологией, а потом уже берись за планирование и реализацию. Например для файловой системы клиента глубоко фиолетово была ли папка удалена и создана заново или нет. Это всё равно одна и та же папка. Сложнее если папка была переименована, тогда (по идее) не надо повторно загружать на сервер уже сохранённые файлы. С другой стороны если файлы небольшие - пофиг - синхронизируй всё. Если файлы большие, то можно подумать о хешировании файлов и проверки наличия их на сервере без загрузки. В папку как вариант при первой синхронизации можно сохранять идентификатор папки и просить пользователей не баловаться с этими идентификаторами. В общем успехов в создании своего GIT-a. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 13:27 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
frizz_Если б у каждой папки был свой id или guid - проблем бы не было У тебя удачный день, у них таки есть id. http://delphi.cjcsoft.net/viewthread.php?tid=46358 Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 13:29 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
goldmi45frizz_, чем же папка отличается от файла? Почему к папке отдельный подход? Если удалить у клиента файл, а потом создать с таким же именем, то файл будет таким же или другим? 1. Отличается тем, что в файле есть некое содержимое и оно может отличаться, то есть файл 1.txt= 12kb, а новый 1.txt=13kb, а старую "новая папку" я не могу отличить по размеру от новой "новой папки". 2. Отличается тем, что -> у клиента время изменения файла 01:01:01. В какой то момент программа отправляет файл серверу (когда появился интернет например). на сервере -дата изменения файла будет дата его получения: например 02:02:02. Хорошо, вместе с файлом отправляем и время его изменения на клиенте, получится что сервер получил в 02:02:02, но принудительно изменил атрибуты на 01:01:01. Это работает с файлами, но не с папками, допустим я поменял атрибут папки: выставил ему время изменения как у клиента но!- если в папку положить файл - изменится дата изменения папки, хотя саму папку я вроде как не менял (хотя на самом деле - копируя файл в папку - мы всего лишь добавляем запись в папку, то есть папка это тоже файл), как итог - при следующей синхронизации клиент видит что время изменения папки на сервере изменилось, значит его обновил другой клиент! надо закачать, хотя инициатор он сам же. Проблема в том, что сложно отслеживать время изменения каждой папки, в которых меняются файлы. Ищу идею, как бы обойтись без привязки синхронизации по времени(для папок), то есть однозначно синхронизировать папки ежду сервером и клиентом, игнорируя атрибуты времени. Программа как то должна понимать...блин, я запутался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 14:57 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
DimonkaНапример для файловой системы клиента глубоко фиолетово была ли папка удалена и создана заново или нет. Это всё равно одна и та же папка. Не совсем: 1. Создаем папку у клиента 2. Вносим запись в бд + пометку, что ее нужно синхронизировать. 3 Синхронизируем, ставим отметку, что папка есть на сервере. 4. Удаляем папку у клиента(синхронизации еще нет) 5. На клиенте2 обновляем папку, синхронизируем, теперь на сервере это уже другая папка. 6. клиент1 подключается к сети - папка помечена на удаление, но на сервере уже не та папка. DimonkaСложнее если папка была переименована, тогда (по идее) не надо повторно загружать на сервер уже сохранённые файлы. С другой стороны если файлы небольшие - пофиг - синхронизируй всё. Если файлы большие, то можно подумать о хешировании файлов и проверки наличия их на сервере без загрузки. Для этого сделал "теневую папку", куда перемещаются все, что удалено и переименовано. Файлы синхронизируются заново. Пока лучше ничего не придумал. DimonkaВ папку как вариант при первой синхронизации можно сохранять идентификатор папки и просить пользователей не баловаться с этими идентификаторами. В общем успехов в создании своего GIT-a. :-) там папки со множественными вложениями и подпапками, да и вообще - влезать со своими файлами в чужие файловые структуры - нехорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:12 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
зачем все эти лисапеды? или это курсач? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:14 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovfrizz_Если б у каждой папки был свой id или guid - проблем бы не было У тебя удачный день, у них таки есть id. http://delphi.cjcsoft.net/viewthread.php?tid=46358 Спасибо мил человек, пока на ум приходит только одно - если эта функция работает - разместить его на сервере - клиент синхронизируется, новая папка создается на сервере, тут же получает этот id и отправляет его клиенту. Клиент прописывает его в в своей базе, в записи "Новая папка"... дальше пока не сообразил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:17 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийзачем все эти лисапеды? или это курсач? битторентсюнч - скорость низкая, майл облако - ограничение в размере передаваемого файла+ ограничение совокупного объема нормальных бесплатных синхронизаторов не нашел, да и не подходят они мне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:21 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
05.06.2019 15:17, frizz_ пишет: > тут же получает этот id и отправляет его клиенту. тот Id и этот Id, это разные Id. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:22 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
05.06.2019 15:21, frizz_ пишет: > нормальных бесплатных синхронизаторов не нашел, да и не подходят они мне. поставь себе SFTP и не изобретай лисапеды. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:24 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
frizz_нормальных бесплатных синхронизаторов не нашел Ну и чем тебе rsync не подходит? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:51 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovfrizz_Если б у каждой папки был свой id или guid - проблем бы не было У тебя удачный день, у них таки есть id. http://delphi.cjcsoft.net/viewthread.php?tid=46358 Ура, функция работает и у вновь созданной папки показывает другой id. Еще раз благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 15:53 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
frizz_Dimitry Sibiryakovпропущено... У тебя удачный день, у них таки есть id. http://delphi.cjcsoft.net/viewthread.php?tid=46358 Ура, функция работает и у вновь созданной папки показывает другой id. Еще раз благодарю.про привелегии не забудь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2019, 16:57 |
|
||
|
Как синхронизировать папки по интернету?
|
|||
|---|---|---|---|
|
#18+
Почему не воспользоваться готовым решением, например mega.nz? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2019, 11:56 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=72&tid=2039414]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 318ms |

| 0 / 0 |
