|
|
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Есть куча копий проги, каждая со своей локальной БД, надо в случае ее копирования сменить GUID БД. Копируют юзеры - как умеют. Копирование чаще для переноса на другой комп, но если тут GUID поменяется, то не страшно. Ломаю голову как бы это сделать автоматом. Единственное что придумал: задействовать потоки NTFS, они теряются при копировании на флэшку с FAT32, теряются при копировании Far`ой. Но отлично копируются проводником. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 17:26 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima T, Видится какое-то локальное хранилище (сайт к примеру), которое отдает пакет в виде прога + БД с измененным GUID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 17:30 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
DarkMasterDima T, Видится какое-то локальное хранилище (сайт к примеру), которое отдает пакет в виде прога + БД с измененным GUID. Тут столько сил вложено чтобы максимально упростить перенос проги простым копированием, юзеры обучены, так что не вариант откатываться к установке с нуля. Кроме того установка с нуля заставит юзера переносить настройки и еще кое-какую инфу, ради чего собственно копирование делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 17:57 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Немного дополню ТЗ: GUID БД нужен чтобы организовать между ними репликацию, чтобы каждый юзер видел что наработали другие. И есть центральная БД, куда все юзеры сливают наработанное, и оттуда получают наработанное другими. "Оттуда" построено так что при добавлении инфы от одной БД формируется команда всем остальным БД качать эту инфу, отсюда проблема если две БД имеют один GUID, то первая отправит инфу, а вторая не получит, или первая вперед получит команду, скачает, удалит, а вторая без инфы останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 18:06 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Храни GUID в реестре (GetSetting/SaveSetting), в качестве ключа используй полный UNC файла БД. Если в реестре пусто - генери новый случайный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 18:14 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Другой вариант - хранить список гуидов в служебной таблице (ключ тот же). Таблицу также "еплицировать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 18:16 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
AkinaХрани GUID в реестре (GetSetting/SaveSetting), в качестве ключа используй полный UNC файла БД. Если в реестре пусто - генери новый случайный. Рассматриваю как вариант. Но он наихудший. БД может быть в локалке и использоваться несколькими юзерами (они внутри БД). Добавление нового юзера, вызывает смену GUID БД, а смена GUID БД вызывает смену GUID всех юзеров БД. Все БД с их юзерами хранит центральная БД, и там будет куча "мертвых душ", оно самоочистится через полгода после смены, но засирать ими не хочется. AkinaДругой вариант - хранить список гуидов в служебной таблице (ключ тот же). Таблицу также "еплицировать". Это не понял, можно поподробнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 18:37 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
В качестве уникального ключа используй (UNC станции + UNC пользователя + UNC файла БД). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2016, 20:38 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Подумал, пришел к выводу что направление изначально неправильное. Задача получается гораздо шире чем отсутствие контроля за размножением копий БД. Проблемы с данными надо решать на уровне данных, а по какой причине возникла проблема - неважно. Кроме копирования есть еще восстановления с бэкапа. Сбои сети и т.д. и т.п. Главная проблема в возникновении рассинхронизации данных в разных копиях БД, вот ее и надо решать в первую очередь. Буду протокол репликации пересматривать, сейчас все по минимуму: все оперативно получают только новое и плюс изредка полная синхронизация. Надо какую-то контрольную инфу текущего состояния при каждом обмене передавать, чтобы центральная БД обнаруживала рассинхронизацию и давала команду на полную синхронизацию. Дальше все внештатные случаи писать в лог и по нему уже изучать и выискивать причины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 07:54 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima T"Оттуда" построено так что при добавлении инфы от одной БД формируется команда всем остальным БД качать эту инфу, отсюда проблема если две БД имеют один GUID, то первая отправит инфу, а вторая не получит, или первая вперед получит команду, скачает, удалит, а вторая без инфы останется. А ты не удаляй после скачивания. Тогда вторая сможет скачать. И приказ к скачиванию рассылай всем без исключения. БД сама способна заметить, что эти данные у ней уже есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 14:03 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima T, посмотри как утилита rsync работает. Может поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 10:26 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
maytonDima T, посмотри как утилита rsync работает. Может поможет. rsync тут лишний, у меня до 1000 записей неизменяемых с гуидами, можно просто все гуиды запросить, сверить, которых нет - запросить по ним полную инфу. Это и есть полная синхронизация. Можно вообще тупо каждый раз полный список гуидов выдавать, но как-то это совсем неоптимально. Как определить что файл скопирован я придумал: у папки где он лежит есть дата создания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 10:42 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima TЕдинственное что придумал: задействовать потоки NTFS, они теряются при копировании на флэшку с FAT32, теряются при копировании Far`ой. Но отлично копируются проводником. Потоки NTFS забирает в себя WinRAR если выставлен соотв. флажок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 10:52 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima TКак определить что файл скопирован я придумал: у папки где он лежит есть дата создания. Ты немножко нас всех запутал названием темы. Ведь тебе ничего отслеживать не надо. Тебе надо: 1) Регистрация базы на рабочей станции. Выдача персонального GUID. 2) Гарантия того что база актуализируется. Верно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 10:55 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
mayton1) Регистрация базы на рабочей станции. Выдача персонального GUID. В этом и проблема. В локалке базу могут использовать по сети. В расшаренную папку положил и можно с нескольких компов работать. А если сеть подглючивает, админов нет, то плюют на все прелести сетевой работы и делают каждый себе копию. Бывают другие причины отказаться от сетевой работы. Вот тебе и несколько баз с одним GUID. mayton2) Гарантия того что база актуализируется. Верно. И как можно быстрее. Центральная БД всех заинтересованных в онлайне оповещает о наличии новой инфы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 11:50 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima T, ну что я могу сказать. Совет - вынести все в веб наверное будет слишком альтруистичным? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 12:29 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
maytonDima T, ну что я могу сказать. Совет - вынести все в веб наверное будет слишком альтруистичным? Не, все нельзя, веб не готов к работе в режиме 24/7. Даже такие монстры как соцсети иногда падают. Да и не везде у конечных пользователей с подключением к инету все замечательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 13:06 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima TА если сеть подглючивает, админов нет, то плюют на все прелести сетевой работы и делают каждый себе копию. Бывают другие причины отказаться от сетевой работы. Вот тебе и несколько баз с одним GUID. Иди от обратного: затачивай БД изначально на автономную работу с синхронизацией при первой появившейся возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 13:55 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Я думаю с заказчиком просто прокашлять эту тему надо. Бизнес должен быть просто предупрежден о том что система работает в 99% случаев в онлайне а в 1% допускается офлайновая работа но с уведомлением пользователя. Дескыть - щас нет сети и как только будет так сразу все заявки улетят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 14:00 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovИди от обратного: затачивай БД изначально на автономную работу с синхронизацией при первой появившейся возможности. Я к этому и иду, эта репликация первый шаг в эту сторону, но это только часть функционала, который сейчас есть при работе в локалке. Как весь функционал сделаю - можно будет каждого юзера посадить работать автономно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 14:11 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
maytonЯ думаю с заказчиком просто прокашлять эту тему надо. Бизнес должен быть просто предупрежден о том что система работает в 99% случаев в онлайне а в 1% допускается офлайновая работа но с уведомлением пользователя. Дескыть - щас нет сети и как только будет так сразу все заявки улетят. Не совсем понял к какому посту это предложение. Если к скорости репликации, то тут так и есть, 99% онлайна вполне допустимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 14:16 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
У файла есть уникальный идентификатор... https://msdn.microsoft.com/en-us/library/aa363788(v=vs.85).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 15:31 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
BarloneУ файла есть уникальный идентификатор... https://msdn.microsoft.com/en-us/library/aa363788(v=vs.85).aspx Спасибо. Вроде то что надо. Надо затестить. авторFile IDs are not guaranteed to be unique over time, because file systems are free to reuse them. И тут МС на идшниках сэкономил. Как с PID. Зачем создавать потенциальную возможность сохранения ID при замене файла? Тем более что там два DWORD под ID выделено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 16:17 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima TBarloneУ файла есть уникальный идентификатор... https://msdn.microsoft.com/en-us/library/aa363788(v=vs.85).aspx Спасибо. Вроде то что надо. Надо затестить. Потесть plz меняется ли ID если move-нуть файл в пределах одного volume. И еще move с одного volume на другой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:39 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Затестю все варианты, отпишусь по результату. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 22:51 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima TИ тут МС на идшниках сэкономил. Не экономил. Это способ вычисления: ID тома + позиция в каталоге. inode на линухе тоже повторно используются и никто не жалуется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2016, 13:56 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
maytonПотесть plz меняется ли ID если move-нуть файл в пределах одного volume. И еще move с одного volume на другой. Потестил в Far и Проводнике. Win7, NTFS. Смотрел дату создания и ID ОперацияРезультатКопированиеменяетсяПереименованиене меняетсяПеренос в другую папку в пределах томане меняетсяПеренос папки с файлом внутрине меняетсяПеренос на другой томменяетсяПросмотр по сети с разных ПКне меняется Интересно сработало в фаре "Перенос на другой том и обратно", время не меняется, а ID меняется. Проводник только копирует на другой том. И "Копирование с перезаписью": в фаре поменялся ID, а в проводнике нет. Время не поменялось ни там ни там. исходник смотрелки Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2016, 17:56 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Dima T, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2016, 17:59 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Дима. Еще попробуй plz в FAR-е ALT+F6 (создание хард-линка на файл). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2016, 22:54 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
maytonДима. Еще попробуй plz в FAR-е ALT+F6 (создание хард-линка на файл). Одинаковые. ID и время ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2016, 07:27 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
Статья на схожую тему. https://habrahabr.ru/company/mailru/blog/307412/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 16:40 |
|
||
|
Как отследить копирование файла?
|
|||
|---|---|---|---|
|
#18+
По очень старым воспоминаниям. Была совершенно аналогичная задача. Рабочее решение было такое - все поля синтетического ключа были сделаны заполняемыми не последовательно, а рандомно (так, как это делается при создании реплик БД). Собственно слизывали решение именно с репликации, которая не работала именно из-за бесконтрольного копирования - не любит она несинхронные копии реплик. В те стародавние времена GUID-поля ещё не прижились, и для снижения вероятности интерференции мы использовали программно генерируемую 64-байтную случайную строку в качестве уникального идентификатора, и CRC32 в качестве первичного ключа. Предполагалось, что в случае коллизии по первичному ключу будет несложно разрешить конфликт за счёт несовпадения уникального идентификатора, а т.к. вероятность коллизии оценивалась как крайне малая, то предполагалось развести всё вручную - но за всё время работы (лет 5 или 6, не помню) так ни разу и не пришлось этим заниматься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2016, 17:07 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1340641]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 402ms |

| 0 / 0 |
