Я знаю, что есть несколько программ, которые будут синхронизировать файлы по сети. Ни один из них не делает то, о чем я думал. Позвольте мне объяснить, чего я хочу достичь ...
В моей сети несколько компьютеров используют одни и те же файлы. например, файл quickbooks доступен для нескольких компьютеров, и это большой файл. также есть pst файлы из outlook large. каждую ночь мы создаем резервную копию по сети файлов, которые были изменены. Я думаю, что это не имеет смысла копировать весь файл размером 1 ГБ, если он имеет незначительные изменения. поэтому я хочу придумать алгоритм, который будет сравнивать части файлов.
например, допустим, что pst-файл outlook состоит из байтов:
1, 2, 3, 4, 5, 6, 7, 8, 9
если я получу электронное письмо, байты теперь будут:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 for example
теперь вместо отправки всего файла будет проще отправить только байт 10
так что на самом деле файл имеет тысячи байтов, поэтому я буду проверять контрольную сумму каждого мегабайта файла, поэтому теперь моя таблица должна выглядеть следующим образом:
aaa1, aaa2, aaa3, abf8, etc...
если при получении электронного письма теперь в файле pst есть таблица:
aaa1, aaa2, aaa3, 7a8b, etc ... then I know that the first 3 megabits are the same and I should send just one megabite instead of the entire file...
Я думаю, что этот алгоритм будет отлично работать, если контент был добавлен в конец файла, но в действительности байт может быть изменен в начале файла, и мой алгоритм не будет работать. например, если в начале файла добавляется один байт, все шестнадцатеричные коды изменятся ...
как я могу сделать алгоритм более эффективным? Было бы хорошо, если бы я мог послать части файла вместо всего файла